问题描述
我正在尝试将我们的软件安装程序(设置)项目从使用Wix更改为Inno Setup。
在Wix中,其msiexec /X {appId}
为UninstallString
。但我注意到Inno Setup的操作方式有所不同。它立即调用unins000.exe
。我担心的是,在任何情况下,如果程序文件夹中缺少unins000.exe
,则用户可能无法正确卸载我们的软件。
我的问题是:
- 有什么方法可以自定义
UninstallString
以使用AppId
进行卸载? - 我可以使用
AppId
通过Inno Setup进行卸载吗? (*我的软件有静态的AppId
,因此AppId
一直是众所周知的。)
我尝试在命令提示符下手动键入命令msiexec /X {AppID}_isl
,但似乎无法以这种方式卸载软件。
谢谢。
解决方法
Inno Setup完全不使用MSI数据库。 Inno Setup是完全独立的,没有任何依赖关系或全局数据库或任何类型的注册。
Inno Setup AppId不是MSI产品代码。从某种意义上讲,您可以使用AppId卸载应用程序。通过在HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
中查找AppId并在其中使用UninstallString
。但这显然不是您想要的。
使用Inno Setup自己的卸载程序是卸载应用程序的唯一方法。
我不认为您正在解决一个真正的问题。用户在安装文件夹中所做的任何更改都会以某种方式损坏应用程序。用户不应以任何方式触摸安装文件夹。默认情况下,用户甚至没有权限(如果您将应用程序安装到Program Files
上)。
无论如何,在许多情况下,重新安装应用程序(从而重新创建卸载程序)将解决缺少卸载程序的问题。