Inno Setup:运行 只卸载脚本一次
Inno Setup: Run uninstall script only once
我正在为我们的 WinDRBD 驱动程序使用 Inno Setup,它是从 Linux 到 Windows (https://github.com/LINBIT/windrbd) 的 Linbit DRBD 驱动程序的端口。我们
install/uninstall 正在使用 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 文件
运行 第二次以上时显示消息框。也许我遗漏了一些标志?
在卸载行中添加 RunOnceId: "Uninstall"
(其中 "Uninstall"
只是一个随机标记,您也可以使用 foobar
)就可以了。
所以,
[UninstallRun]
Filename: "MyUninstallProgram.exe"; \
Flags: runascurrentuser waituntilterminated runhidden; \
RunOnceId: "Uninstall"
这将是一种仅使用一次卸载程序 运行 的方法,即使安装了升级程序也是如此。
我正在为我们的 WinDRBD 驱动程序使用 Inno Setup,它是从 Linux 到 Windows (https://github.com/LINBIT/windrbd) 的 Linbit DRBD 驱动程序的端口。我们 install/uninstall 正在使用 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 文件 运行 第二次以上时显示消息框。也许我遗漏了一些标志?
在卸载行中添加 RunOnceId: "Uninstall"
(其中 "Uninstall"
只是一个随机标记,您也可以使用 foobar
)就可以了。
所以,
[UninstallRun]
Filename: "MyUninstallProgram.exe"; \
Flags: runascurrentuser waituntilterminated runhidden; \
RunOnceId: "Uninstall"
这将是一种仅使用一次卸载程序 运行 的方法,即使安装了升级程序也是如此。