根據用戶的選擇,我已經制作了自定義頁面來管理特定的redist工具安裝。Inno setup:ExtractTemporaryFile導致嚮導凍結
這些工具鏈接到用戶檢查的複選框,如果他想要或不需要安裝這些工具。 然後在那裏只顯示一個頁面,向用戶顯示每個工具的安裝進度。
我在這裏的問題是,只有當工具設置的第一個ExtractTemporaryFile完成時才顯示進度頁面,顯示最後一頁,就好像它已經凍結一樣。
在ExtractTemporaryFile發生之前,我必須讓進度頁面顯示的唯一方法是在任何安裝函數之前放置一個MsgBox。 但即使在這種情況下,當ExtractTemporaryFile啓動,進度條動畫被凍結,直到ExtractTemporaryFile後...
下面是代碼的這樣的部分:
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=PageInstallationPersonnalisee.ID then
begin
ProgressBarLabelPageInstPerso.Caption := 'Initialisation...';
if InstallTool1 = True then
begin
ProgressBarLabelPageInstPerso.Caption := 'Installing InstallTool1...';
F_InstallTool1();
end;
if InstallTool2 = True then
begin
ProgressBarLabelPageInstPerso.Caption := 'Installing InstallTool2...';
F_InstallTool2();
end;
if InstallTool3 = True then
begin
ProgressBarLabelPageInstPerso.Caption := 'Installing InstallTool3...';
F_InstallTool3();
end;
ProgressBarPageInstPerso.Style := npbstMarquee;
//ProgressBarPageInstPerso.Style := npbstNormal;
ProgressBarPageInstPerso.Position := 100;
CancelWithoutPrompt:=True;
WizardForm.Close;
end;
end;
注意ExtractTemporaryFile()
是在每個F_InstallTooln()
功能。
其他設置和文件的部分的一部分,可以幫助:
[Setup]
SolidCompression=no
[Files]
;Temporary redists
Source: "{#MyRessourcesPath}InstallTool1_Setup.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall noencryption dontcopy
Source: "{#MyRessourcesPath}InstallTool2_Setup.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall noencryption dontcopy
Source: "{#MyRessourcesPath}InstallTool3_Setup.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall noencryption dontcopy
在這裏,沒有顯示在網頁PageInstallationPersonnalisee直到第一ExtractTemporaryFile後...
我知道,ExtractTemporaryFile可能會導致一些延遲安裝過程,但爲什麼它應該導致嚮導凍結?
所以我的問題是:在我的情況下,有沒有辦法強制嚮導刷新,以便他在任何ExtractTemporaryFile程序啓動之前出現?
對於提取到臨時文件夾的文件,最好使用'nocompression'標誌。也建議將它們放在'[Files]'部分的最開始處。它也取決於你的文件的大小。 – RobeN
你好。如果情況下我添加了無壓縮參數,並且文件已經在文件部分的開頭。 但我仍然凍結,直到ExtractTemporaryFile程序完成.... – BenDev
文件有多大? –