从Pascal代码更改Inno Setup消息

时间:2016-03-09 09:15:59

标签: inno-setup pascalscript

我需要更改ConfirmUninstallUninstalledMost(以防万一)和UninstalledAll具体来自脚本以设置条件。像这样:

if FileExists(ExpandConstant('{app}\Slash.exe')) then
  SetupMessage(msgConfirmUninstall) := FmtMessage(SetupMessage(msgConfirmUninstall), ['Dagon Slasher'])
else if FileExists(ExpandConstant('{app}\Frank.exe')) then
  SetupMessage(msgConfirmUninstall) := FmtMessage(SetupMessage(msgConfirmUninstall), ['Dagon Frankenstein'])
else
  SetupMessage(msgConfirmUninstall) := FmtMessage(SetupMessage(msgConfirmUninstall), ['Dagon Video Tools']);

但这不起作用。这些消息在MsgBox es中使用,所以我想不出任何其他方式。 Running in silent mode并不适合我,因为如果已安装程序(或其中一个),安装程序将运行卸载,因此我不希望用户通过运行安装程序意外卸载程序。 / p>

1 个答案:

答案 0 :(得分:1)

你无法改变这些。也许除了实现一些监视新消息框的DLL并在它们出现时更新它们。

关于the silent uninstall solution:我不明白你的问题&#34;如果程序(或其中一个)已安装&#34; ,安装程序将运行卸载。< / p>

我假设您只在用户确认要安装新版本后才运行卸载程序,因此您实际上想要静默运行卸载程序,对吧?

无论如何,即使&#34;添加/删除程序&#34; 中的条目引用,也无法阻止您从安装程序非静默运行卸载程序到&#34;沉默&#34;安装。

您可以使用涵盖所有设置类型的通用消息:

[Messages]
ConfirmUninstall=Are you sure you want to completely remove this game?

由于卸载消息取决于已安装应用程序的类型,因此您可以将安装程序修改为:

  • 创建自定义&#34;输入&#34;页面(如菜单)作为第一个。
  • 用户选择&#34;键入&#34;后,使用自定义切换(例如/APPTYPE=slasher)重新启动安装程序并退出。
  • 使用/APPTYPE(重新)运行安装程序后,您从一开始就知道要安装的组件/类型,因此可以相应地设置AppName(使用{{3 }})。
  • 当然,您跳过自定义&#34;类型&#34;页。

这实际上并不难实现。唯一的缺点是设置窗口被重新创建&#34;在用户选择&#34;类型&#34;。

之后

我已经在a scripted constant的回答中草拟了这个解决方案。