2016-03-09 55 views
1

我需要更改ConfirmUninstallUninstalledMost(以防万一)和UninstalledAll明确地从脚本设置条件。类似这样的:更改来自Pascal代码的Inno Setup消息

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']); 

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

回答

1

你不能改变这些。也许除了实现一些监视新消息框并更新它们的DLL。


关于the silent uninstall solution:我不明白与您的问题“如果安装程序(或其中一人)已安装将卸载运行”。

我假设你只有在用户确认他想安装新版本后才运行卸载程序,所以你实际上想要默认运行卸载程序,对不对?

反正没有什么阻止您从您的安装运行卸载非悄无声息,即使在进入“添加/删除程序”指的是“无声”的安装。


您可以使用,覆盖了所有设置类型的一般消息:

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

当你的卸载信息取决于类型所安装应用程序,您可以修改安装程序:

  • 创建自定义“类型”页面(如菜单)作为第一个。
  • 一旦用户选择“类型”,用自定义开关(例如/APPTYPE=slasher)重新启动安装程序并退出。
  • 一旦安装程序(重新)与/APPTYPE一起运行,从一开始就知道您正在安装什么组件/类型,因此您可以相应地设置AppName(使用a scripted constant)。
  • 当然,您可以跳过自定义“类型”页面。

这实际上并不难实现。唯一的缺点是在用户选择“类型”之后,设置窗口被“重新创建”。

我已经在我的答案Inno Setup Change AppName based on component(s) selected中草拟了这个解决方案。

相关问题