Inno setup 更改卸载确认提示

Inno setup 更改卸载确认提示,inno-setup,Inno Setup,是否可以使用代码更改[消息]部分中的消息? 我想更改消息ConfirmUninstall,如下所示 [Messages] ConfirmUninstall=Are you sure you want to remove {code:GetIDandName} and its components. 有可能这样做吗?如果没有,有没有办法做到这一点 谢谢。不,你不能 在某些情况下,您可以使用 但不是在你的情况下 你可以自动化用户界面,但这并不好。看 使用ConfirmUninstall所能做的就

是否可以使用代码更改
[消息]
部分中的消息? 我想更改消息
ConfirmUninstall
,如下所示

[Messages]
ConfirmUninstall=Are you sure you want to remove {code:GetIDandName} and its components.
有可能这样做吗?如果没有,有没有办法做到这一点

谢谢。

不,你不能

在某些情况下,您可以使用

但不是在你的情况下

你可以自动化用户界面,但这并不好。看


使用
ConfirmUninstall
所能做的就是:

  • 通过在“添加/删除程序”条目中强制(添加另一个自定义开关以明确它实际上不是静默模式)和
  • 在中实现您自己的提示符
[设置]
AppId=myprogram
[守则]
常数
卸载密钥=
'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting(“AppId”)}\u is1';
UninstallStringName='UninstallString';
CustomUninstallPromptSwitch='/CUSTOMUNINSTALLPROMPT';
UninstallSwitchs='/SILENT'+CustomUninstallPromptSwitch;
过程CurStepChanged(CurStep:TSetupStep);
变量
S:字符串;
开始
如果CurStep=ssPostInstall,则
开始
如果不是RegQueryStringValue(
HKEY_本地_机器,ExpandConstant(卸载密钥),
卸载StringName,S)然后
开始
日志(格式)(
'在%s中找不到%s'[
UninstallStringName,ExpandConstant(UninstallKey)]);
结束
其他的
开始
日志(格式('%s为%s',[s]);
S:=S+“”+卸载开关;
如果不是RegWriteStringValue(
HKEY_本地_机器,ExpandConstant(卸载密钥),
卸载StringName,S)然后
开始
日志(格式('写入%s'时出错,[UninstallStringName]);
结束
其他的
开始
日志(格式('写入[%s]到%s',[s,卸载字符串名称]);
结束;
结束;
结束;
结束;
函数CmdLineParamExists(常量值:字符串):布尔值;
变量
I:整数;
开始
结果:=假;
对于I:=1的参数
开始
如果CompareText(ParamStr(I),Value)=0,则
开始
结果:=真;
出口
结束;
结束;
结束;
函数GetIDandName:string;
开始
结果:=。。。;
结束;
函数InitializeUninstall():布尔值;
变量
文本:字符串;
开始
结果:=真;
如果CmdLineParameterExists(CustomUninstallPromptSwitch)和UninstallSilent,则
开始
日志(“自定义卸载提示”);
Text:=FmtMessage(SetupMessage(msgConfirmUninstall),[GetIDandName()]);
结果:=(MsgBox(文本,mbConfirmation,MB_YESNO)=y);
结束;
结束;

您甚至可以进一步禁止卸载程序在未使用自定义开关执行时继续。这样可以防止用户从安装文件夹手动启动
unins000.exe

函数InitializeUninstall():布尔值;
变量
文本:字符串;
开始
结果:=真;
如果不是CmdLineParamExists(CustomUninstallPromptSwitch),则
开始
MsgBox('请转到控制面板/设置以卸载此程序',
b错误,b_正常);
结果:=假;
结束
其他的
如果是沉默的话
开始
日志(“自定义卸载提示”);
Text:=FmtMessage(SetupMessage(msgConfirmUninstall),[GetIDandName()]);
结果:=(MsgBox(文本,mbConfirmation,MB_YESNO)=y);
结束;
结束;

GetIDandName只返回一个字符串,我想用它来代替默认的%1。当然,但是字符串的来源是什么?=你是如何制作这根线的?你能给我们看一下代码吗?我很抱歉没有更具描述性。基本上,使用安装程序,我可以安装应用程序的多个实例,每个应用程序都有一个唯一的名称/id。该名称/id存储在注册表中。所以我有一个GetIDandName()函数,它基本上读取注册表并返回字符串?在安装过程中,您是否指定了一些选项来确定实例的种类/名称/id?并且该选择保留在注册表中?是的,当我使用添加/删除卸载时,我希望使用reg中的该名称/id,并将其显示在确认对话框中。