Inno setup 在Inno安装程序中安装所有组件后结束安装
我试图在所有组件都已安装时停止安装 安装示例:Inno setup 在Inno安装程序中安装所有组件后结束安装,inno-setup,pascalscript,Inno Setup,Pascalscript,我试图在所有组件都已安装时停止安装 安装示例: 第一次安装:一个组件安装 第二次安装:安装组件的其余部分 第三次安装:安装程序开始并直接转到wpfished页面或停止,并显示消息“所有组件都已安装” 我在这里和其他网站上做了一些研究,我做了以下工作: 过程取消按钮单击(CurPageID:Integer;var Cancel,Confirm:Boolean); 开始 确认:=假; 结束; 程序初始化; 变量 ItemIndex:整数; InstallEn:字符串; InstallFr:字符串;
wpfished
页面或停止,并显示消息“所有组件都已安装”过程取消按钮单击(CurPageID:Integer;var Cancel,Confirm:Boolean);
开始
确认:=假;
结束;
程序初始化;
变量
ItemIndex:整数;
InstallEn:字符串;
InstallFr:字符串;
InstallDe:字符串;
CompDescEnIndex:整数;
CompDescFrIndex:整数;
CompDescDeIndex:整数;
检查:整数;
开始
#这部分是为了使不可选择的组件已经安装
如果RegQueryStringValue(HKLM,'Software\COMPANY\{{RegProduct}{RegCurVer}','Install ENG',InstallEn),则
如果((InstallEn=‘国际包装’)
或(InstallEn='Pack International')
或(InstallEn='International Paket'))
然后
ItemIndex:=WizardForm.ComponentsList.Items.IndexOf(CustomMessage('CompDescEn'));
WizardForm.ComponentsList.ItemEnabled[ItemIndex]:=False;
如果RegQueryStringValue(HKLM,'Software\COMPANY\{{RegProduct}{RegCurVer}','Install FRA',InstallFr),则
如果((InstallFr=‘法国包装’)
或(InstallFr=‘法国包装’)
或(InstallFr='Franzosisch Paket'))
然后
ItemIndex:=WizardForm.ComponentsList.Items.IndexOf(CustomMessage('CompDescFr'));
WizardForm.ComponentsList.ItemEnabled[ItemIndex]:=False;
如果RegQueryStringValue(HKLM,'Software\COMPANY\{{RegProduct}{RegCurVer}','Install DEU',InstallDe),则
如果((InstallDe=‘德国包装’)
或(InstallDe='Pack Allemand')
或者(InstallDe='Deutsches-Paket'))
然后
ItemIndex:=WizardForm.ComponentsList.Items.IndexOf(CustomMessage('CompDescDe'));
WizardForm.ComponentsList.ItemEnabled[ItemIndex]:=False;
#在我尝试说是否所有组件都已安装后,请关闭向导。
CompDescEnIndex:=WizardForm.ComponentsList.Items.IndexOf(CustomMessage('CompDescEn'));
CompDescFrIndex:=WizardForm.ComponentsList.Items.IndexOf(CustomMessage('CompDescFr'));
CompDescDeIndex:=WizardForm.ComponentsList.Items.IndexOf(CustomMessage('CompDescDe'));
如果不是向导Form.ComponentsList.ItemEnabled[CompDescEnIndex]
而不是WizardForm.ComponentsList.ItemEnabled[CompDescFrIndex]
而不是WizardForm.ComponentsList.ItemEnabled[CompDescDeIndex]
然后
检查:=1;
如果(勾选0),则
向导窗体。关闭;
结束;
注意:代码可能不是很干净,我从Code
部分的Pascal+Inno设置开始
如果我的所有组件都已安装(且不可选),我希望向导停止而不继续
我找不到直接进入wpFinished
页面的解决方案。。。有办法吗
如果由于WizardForm.Close而安装了所有组件,如何停止向导代码>在我的情况下似乎不起作用
谢谢您的帮助。您不能跳到wpFinished
页面,因为Inno安装程序不允许您跳过wpReady
页面,以避免创建全自动安装程序(可能会被滥用)
您可以通过以下方式创建自定义“完成”页面:
procedure AllInstalledPageActivate(发送方:TWizardPage);
开始
{将自定义页面上的“下一步”按钮更改为“完成”}
WizardForm.NextButton.Caption:=设置消息(msgButtonFinish);
{隐藏“取消”按钮}
WizardForm.CancelButton.Visible:=False;
结束;
程序ExitProcess(UEXIT代码:UINT);
外部的ExitProcess@kernel32.dllstdcall';
函数AllInstalledPageNextButtonClick(发送方:TWizardPage):布尔值;
开始
{在自定义页面上单击“完成”按钮时中止安装程序}
退出过程(0);
结果:=真;{关闭编译器警告}
结束;
过程初始化Wizard();
变量
描述:特拉贝尔;
AllInstalledPage:TWizardPage;
开始
...
{如果所有内容都已安装…}
如果一切都停止了那么
开始
{…创建自定义的“已安装所有内容”页面}
AllInstalledPage:=
创建自定义页面(
wpWelcome,‘所有组件都已安装’,
“没有要安装的东西。”);
AllInstalledPage.OnActivate:=@AllInstalledPage激活;
AllInstalledPage.OnNextButtonClick:=@AllInstalledPageNextButtonClick;
标题:=TLabel.Create(AllInstalledPage);
说明.说明:=
“一切都已经安装好了。单击“完成”关闭安装程序。“;
标题.宽度:=AllInstalledPage.SurfaceWidth;
Caption.Parent:=AllInstalledPage.Surface;
结束;
结束;
更简单的解决方案是使用一个简单的
向导.Close
将关闭安装程序,但不会转到“完成”页面。如果确实要中止安装程序,请从返回False
(需要将部分代码移到初始化设置中)
或者使用,如我的示例中所示。您不能跳到wpFinished
页面,因为Inno安装程序不允许您跳过wpReady
页面,以避免创建全自动安装程序(这可能会被滥用)
您可以通过以下方式创建自定义“完成”页面:
procedure AllInstalledPageActivate(发送方:TWizardPage);
开始
{将自定义页面上的“下一步”按钮更改为“完成”}
WizardForm.NextButton.Caption:=设置消息(msgButtonFinish);
{隐藏“取消”按钮}
WizardForm.CancelButton.Visible:=False;
结束;
过程ExitProcess(uExitCode:UIN