如果卸载程序exe丢失,请使用AppId卸载随Inno Setup一起安装的程序

问题描述

我正在尝试将我们的软件安装程序(设置)项目从使用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上)。


无论如何,在许多情况下,重新安装应用程序(从而重新创建卸载程序)将解决缺少卸载程序的问题。