inno setup 卸载注册表_Inno Setup:如何自动卸载以前安装的版本?

凤凰求蛊

我使用了以下内容。我不确定这是最简单的方法,但它有效。这种用途{#emit SetupSetting("AppId")}依赖于Inno Setup Preprocessor。如果您不使用它,请直接剪切并粘贴您的App ID。[Code]/function GetUninstallString(): String;var  sUnInstPath: String;  sUnInstallString: String;begin  sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting("AppId")}_is1');  sUnInstallString := '';  if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then    RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString);  Result := sUnInstallString;end;/function IsUpgrade(): Boolean;begin  Result := (GetUninstallString() <> '');end;/function UnInstallOldVersion(): Integer;var  sUnInstallString: String;  iResultCode: Integer;begin// Return Values:// 1 - uninstall string is empty// 2 - error executing the UnInstallString// 3 - successfully executed the UnInstallString  // default return value  Result := 0;  // get the uninstall string of the old app  sUnInstallString := GetUninstallString();  if sUnInstallString <> '' then begin    sUnInstallString := RemoveQuotes(sUnInstallString);    if Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then      Result := 3    else      Result := 2;  end else    Result := 1;end;/procedure CurStepChanged(CurStep: TSetupStep);begin  if (CurStep=ssInstall) then  begin    if (IsUpgrade()) then    begin      UnInstallOldVersion();    end;  end;end;备择方案另请参阅此博客文章“版本比较的Inno安装脚本示例”,它更进一步,并读取任何以前安装的版本的版本号,并将该版本号与当前安装包的版本号进行比较。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值