Inno setup Inno安装程序:仅运行卸载脚本一次
我正在为我们的WinDRBD驱动程序使用Inno设置,它是Linbit的DRBD驱动程序从Linux到Windows()的一个端口。我们 正在使用Inno安装程序进行安装/卸载,效果非常好 我注意到的一点是,如果用户两次安装同一版本(或升级到较新版本),则在用户选择卸载程序时,Inno setup Inno安装程序:仅运行卸载脚本一次,inno-setup,uninstallation,Inno Setup,Uninstallation,我正在为我们的WinDRBD驱动程序使用Inno设置,它是Linbit的DRBD驱动程序从Linux到Windows()的一个端口。我们 正在使用Inno安装程序进行安装/卸载,效果非常好 我注意到的一点是,如果用户两次安装同一版本(或升级到较新版本),则在用户选择卸载程序时,UninstallRun部分中的脚本会多次运行(每次安装一次)。是否有办法使其仅运行一次,即使用户安装了多个升级 我目前使用的是: [UninstallRun] Filename: "C:\Windows\sysnativ
UninstallRun
部分中的脚本会多次运行(每次安装一次)。是否有办法使其仅运行一次,即使用户安装了多个升级
我目前使用的是:
[UninstallRun]
Filename: "C:\Windows\sysnative\cmd.exe"; Parameters: "/c uninstall-windrbd.cmd"; \
WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated shellexec
(注意:sysnative
这是因为Inno安装程序是32位的,而应用程序是64位的,否则在脚本中安装INF会做错误的事情)
这只是一件小事,我们正在运行一个INF文件卸载
在第二次以上运行时显示一个消息框。可能我缺少一些标志?将RunOnceId:“Uninstall”(其中“Uninstall”只是一个随机标记,您也可以使用foobar)添加到卸载行就可以了
所以
即使安装了升级,卸载程序也只能运行一次。请注意,您不应该硬编码
C:\Windows\sysnative
。正确的解决方案是使用标志:64位
(并删除shellexec
)-文件名:“uninstall windrbd.cmd”;WorkingDir:{app}”;标志:runascurrentuser 64位WaitUnFilterminated
[UninstallRun]
Filename: "MyUninstallProgram.exe"; Flags: runascurrentuser waituntilterminated runhidden; RunOnceId: "Uninstall"