Inno Setup:仅运行一次卸载脚本

时间:2018-10-18 14:21:35

标签: inno-setup uninstall

我正在为我们的WinDRBD驱动程序使用Inno Setup,这是Linbit的DRBD驱动程序从Linux到Windows(https://github.com/LINBIT/windrbd)的端口。我们 正在使用Inno-setup进行安装/卸载,效果很好。

我注意到的一件事是,如果用户两次安装相同版本(或升级到较新版本),则在用户选择以后,UninstallRun部分中的脚本将运行多次(每次安装一次)卸载程序,即使用户安装了多个升级程序,也只能使它一次吗?

我当前正在使用的是:

[UninstallRun]
Filename: "C:\Windows\sysnative\cmd.exe"; Parameters: "/c uninstall-windrbd.cmd"; \
    WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated shellexec

(注意:sysnative是因为Inno Setup是32位的,而应用程序是64位的,否则在脚本中进行INF安装会做错事。)

这只是小事,我们正在运行INF文件卸载, 在第二次以上运行时显示一个消息框。也许我缺少一些标志?

1 个答案:

答案 0 :(得分:1)

在Runupnce行中添加RunOnceId:“卸载”(其中“卸载”只是一个随机标记,也可以使用foobar)来达到目的。

所以

[UninstallRun]
Filename: "MyUninstallProgram.exe"; Flags: runascurrentuser waituntilterminated runhidden; RunOnceId: "Uninstall"

即使已安装升级,也将是一种仅运行一次卸载程序的方法。