【发布时间】:2016-03-30 12:43:21
【问题描述】:
我正在尝试在所有组件都已安装时停止我的设置。
安装示例:
- 首次安装:一个组件安装
- 第二次安装:安装其余组件
- 第三次安装:安装开始并直接转到
wpFinished页面或停止并输入一条消息“所有组件都已安装”。
我在这里和其他网站上做了一些研究,我做了以下事情:
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm := False;
end;
procedure InitializeWizard;
var
ItemIndex: Integer;
InstallEn: String;
InstallFr: String;
InstallDe: String;
CompDescEnIndex: Integer;
CompDescFrIndex: Integer;
CompDescDeIndex: Integer;
Check: Integer;
begin
# This part is to make not selectable component already install
if RegQueryStringValue(HKLM, 'Software\COMPANY\{#RegProduct}\{#RegCurVer}', 'Install-ENG', InstallEn) then
if ((InstallEn = 'International Pack' )
or (InstallEn = 'Pack International')
or (InstallEn = 'International Paket'))
then
ItemIndex := WizardForm.ComponentsList.Items.IndexOf(CustomMessage('CompDescEn'));
WizardForm.ComponentsList.ItemEnabled[ItemIndex] := False;
if RegQueryStringValue(HKLM, 'Software\COMPANY\{#RegProduct}\{#RegCurVer}', 'Install-FRA', InstallFr) then
if ((InstallFr = 'French Pack')
or (InstallFr = 'Pack France')
or (InstallFr = 'Franzosisch Paket'))
then
ItemIndex := WizardForm.ComponentsList.Items.IndexOf(CustomMessage('CompDescFr'));
WizardForm.ComponentsList.ItemEnabled[ItemIndex] := False;
if RegQueryStringValue(HKLM, 'Software\COMPANY\{#RegProduct}\{#RegCurVer}', 'Install-DEU', InstallDe) then
if ((InstallDe = 'German Pack')
or (InstallDe = 'Pack Allemand')
or (InstallDe = 'Deutsches Paket'))
then
ItemIndex := WizardForm.ComponentsList.Items.IndexOf(CustomMessage('CompDescDe'));
WizardForm.ComponentsList.ItemEnabled[ItemIndex] := False;
# After I try to say if all component are install, close the wizard.
CompDescEnIndex := WizardForm.ComponentsList.Items.IndexOf(CustomMessage('CompDescEn'));
CompDescFrIndex := WizardForm.ComponentsList.Items.IndexOf(CustomMessage('CompDescFr'));
CompDescDeIndex := WizardForm.ComponentsList.Items.IndexOf(CustomMessage('CompDescDe'));
if not WizardForm.ComponentsList.ItemEnabled[CompDescEnIndex]
and not WizardForm.ComponentsList.ItemEnabled[CompDescFrIndex]
and not WizardForm.ComponentsList.ItemEnabled[CompDescDeIndex]
then
Check := 1;
if (Check <> 0) then
WizardForm.Close;
end;
注意:代码可能不是很干净,我从Code部分的Pascal + Inno Setup开始。
如果我的所有组件都已安装(并且不可选择),我希望向导停止而不是继续...
我找不到直接访问wpFinished 页面的解决方案...有没有办法做到这一点?
如果安装了所有组件,我该如何停止向导,因为 WizardForm.Close; 在我的情况下似乎不起作用?
感谢您的帮助。
【问题讨论】: