从 Pascal 代码更改 Inno Setup 消息
Change Inno Setup messages from Pascal code
我需要专门从脚本更改 ConfirmUninstall
、UninstalledMost
(以防万一)和 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 不太适合我,因为如果程序(或其中之一)已经安装,安装程序将 运行 卸载,所以我不希望用户通过 运行设置。
您不能轻易更改这些,请参阅:
关于the silent uninstall solution:我不明白你的问题“如果程序(或其中一个)已经安装,安装程序将运行卸载”.
我假设你 运行 只有在用户确认他想要安装新版本后才安装卸载程序,所以你实际上想 运行 卸载程序默默地,对吧?
无论如何,没有什么可以阻止您 运行 从安装程序中非静默地卸载卸载程序,即使 "Add/Remove 程序中的条目" 指的是“静默”安装。
您可以使用涵盖所有设置类型的通用消息:
[Messages]
ConfirmUninstall=Are you sure you want to completely remove this game?
由于您的卸载消息取决于安装的应用程序的类型,您可以将安装程序修改为:
- 首先创建自定义“类型”页面(如菜单)。
- 用户选择“类型”后,使用自定义开关(例如
/APPTYPE=slasher
)重新启动安装程序并退出。
- 一旦安装程序(重新)运行
/APPTYPE
,您从一开始就知道您正在安装什么 component/type,因此您可以设置 AppName
相应地(使用a scripted constant)。
- 当然,您可以跳过自定义“类型”页面。
这个其实不难实现。唯一的缺点是设置 window 在用户选择“类型”后“重新创建”。
我已经在对 的回答中概述了这个解决方案。
我需要专门从脚本更改 ConfirmUninstall
、UninstalledMost
(以防万一)和 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 不太适合我,因为如果程序(或其中之一)已经安装,安装程序将 运行 卸载,所以我不希望用户通过 运行设置。
您不能轻易更改这些,请参阅:
关于the silent uninstall solution:我不明白你的问题“如果程序(或其中一个)已经安装,安装程序将运行卸载”.
我假设你 运行 只有在用户确认他想要安装新版本后才安装卸载程序,所以你实际上想 运行 卸载程序默默地,对吧?
无论如何,没有什么可以阻止您 运行 从安装程序中非静默地卸载卸载程序,即使 "Add/Remove 程序中的条目" 指的是“静默”安装。
您可以使用涵盖所有设置类型的通用消息:
[Messages]
ConfirmUninstall=Are you sure you want to completely remove this game?
由于您的卸载消息取决于安装的应用程序的类型,您可以将安装程序修改为:
- 首先创建自定义“类型”页面(如菜单)。
- 用户选择“类型”后,使用自定义开关(例如
/APPTYPE=slasher
)重新启动安装程序并退出。 - 一旦安装程序(重新)运行
/APPTYPE
,您从一开始就知道您正在安装什么 component/type,因此您可以设置AppName
相应地(使用a scripted constant)。 - 当然,您可以跳过自定义“类型”页面。
这个其实不难实现。唯一的缺点是设置 window 在用户选择“类型”后“重新创建”。
我已经在对