准备安装向导页面看上去空了

时间:2018-12-04 10:40:32

标签: inno-setup

这些是我的Inno Setup安装程序的向导页面:

窗口1:

Window 1

窗口2:

Window 2

窗口3:

Window 3

窗口4:

Window 4

窗口5:

Window 5

我的问题是向导页面4。使该页面看起来像是奇怪的。

  • 这是标准行为吗?
  • 应该向用户显示一些东西吗?
  • Suppress此页面吗?

这是我的脚本:

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[ISPP]
; Please, don't edit this section manually if you don't know what are you doing.
#define Skin "Metallics.cjstyles"

#define ThisYear GetDateTimeString('yyyy', '', '');
#define VR "VisitsRota"
#define SourceDir "..\Release"
#define DataDir "{userappdata}\" + VR
#define CommonDataDir "{commonappdata}\" + VR
#define AppURL "http://www.publictalksoftware.co.uk"
#define AppPublisher "Andrew Truckle"

#define AppVerText() \
   ParseVersion(SourceDir + '\VisitsRota.exe', \
       Local[0], Local[1], Local[2], Local[3]), \
   Str(Local[0]) + "." + Str(Local[1]) + "." + Str(Local[2])

; SignTool parameters
#define SignedDesc "$q" + VR + "$q"
#define SignedPfx "$qd:\My Certificate\2018\My Certificate.pfx$q"
#define SignedTimeStamp "$qhttp://timestamp.verisign.com/scripts/timestamp.dll$q"
#define SignedPw "$q~~~~~~$q"

#define LANG_ENG "0"
#define LANG_ESP "1"
#define LANG_ITA "2"
#define LANG_PTB "3"
#define LANG_SVE "4"
#define LANG_FRA "5"
#define LANG_FIN "6"
#define LANG_PLK "7" 
#define LANG_DAN "8"
#define LANG_NLD "9" 
#define LANG_UKR "10"
#define LANG_DEU "11"
#define LANG_AFK "12"
#define LANG_RUS "13"
#define LANG_CSY "14"
#define LANG_SQI "15"
#define LANG_TRK "16"
#define LANG_ELL "17"
#define LANG_HUN "18"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{ECBAEED1-C909-4CF6-B94D-9AF095ACF2E1}
AppName={#VR}
AppPublisher={#AppPublisher}
AppPublisherURL={#AppURL}
AppSupportURL={#AppURL}
AppUpdatesURL={#AppURL}
AppVersion={#AppVerText}
VersionInfoVersion={#AppVerText}
VersionInfoCompany={#AppPublisher}
VersionInfoDescription={#VR}
VersionInfoTextVersion={#AppVerText}
VersionInfoCopyright={#AppPublisher} © 2008 - {#ThisYear}
DefaultDirName={pf}\{#VR}
DefaultGroupName={#VR}
OutputBaseFilename=VisitsRotaSetup
Compression=lzma
SolidCompression=yes
AppMutex={{1D942130-98DF-4F52-8F6E-A68E3D4FC57E}
WizardImageFile=Images\vr???x???.bmp
WizardSmallImageFile=Images\vricon*.bmp
MinVersion=0,5.0
AppCopyright={#AppPublisher} © 2003 - {#ThisYear}
SignTool=SignTool /d {#SignedDesc} /du $q{#AppURL}$q /f {#SignedPfx} /p {#SignedPw} /t {#SignedTimeStamp} /v $f
SignedUninstaller=yes

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; MinVersion: 4,4
Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; MinVersion: 4,4; Flags: unchecked

[Languages]
Name: "English"; MessagesFile: "compiler:Default.isl"; LicenseFile: ".\License\LicenseENG.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Spanish"; MessagesFile: "compiler:Languages\Spanish.isl"; LicenseFile: ".\License\LicenseESP.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Italian"; MessagesFile: "compiler:Languages\Italian.isl"; LicenseFile: ".\License\LicenseITA.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "PortugueseBrazil"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"; LicenseFile: ".\License\LicensePTB.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Swedish"; MessagesFile: "compiler:Languages\Swedish.isl"; LicenseFile: ".\License\LicenseSVE.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "French"; MessagesFile: "compiler:Languages\French.isl"; LicenseFile: ".\License\LicenseFRA.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Finnish"; MessagesFile: "compiler:Languages\Finnish.isl"; LicenseFile: ".\License\LicenseFIN.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Polish"; MessagesFile: "compiler:Languages\Polish.isl"; LicenseFile: ".\License\LicensePLK.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Danish"; MessagesFile: "compiler:Languages\Danish.isl"; LicenseFile: ".\License\LicenseDAN.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Dutch"; MessagesFile: "compiler:Languages\Dutch.isl"; LicenseFile: ".\License\LicenseNLD.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"; LicenseFile: ".\License\LicenseUKR.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "German"; MessagesFile: "compiler:Languages\German.isl"; LicenseFile: ".\License\LicenseDEU.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Afrikaans"; MessagesFile: "compiler:Languages\Afrikaans.isl"; LicenseFile: ".\License\LicenseAFK.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl"; LicenseFile: ".\License\LicenseRUS.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Czech"; MessagesFile: "compiler:Languages\Czech.isl"; LicenseFile: ".\License\LicenseCSY.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Albanian"; MessagesFile: "compiler:Languages\Albanian.isl"; LicenseFile: ".\License\LicenseSQI.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Turkish"; MessagesFile: "compiler:Languages\Turkish.isl"; LicenseFile: ".\License\LicenseTRK.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Greek"; MessagesFile: "compiler:Languages\Greek.isl"; LicenseFile: ".\License\LicenseENG.rtf"; InfoBeforeFile: "RevisionHistory.rtf"
Name: "Hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl"; LicenseFile: ".\License\LicenseHUN.rtf"; InfoBeforeFile: "RevisionHistory.rtf"

[Files]
Source: "..\Release\VisitsRota.exe"; DestDir: "{app}"; Flags: ignoreversion sign
Source: "..\x64\Release\VisitsRota.exe"; DestDir: "{app}"; DestName: "VisitsRota_x64.exe"; Flags: ignoreversion sign
Source: "..\HelpNDoc\CHM\VisitsRota.chm"; DestDir: {app}; Flags: ignoreversion
Source: "..\Release\VisitsRotaESP.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaITA.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaPTB.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaSVE.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaFRA.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaFIN.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaPLK.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaDAN.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaNLD.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaUKR.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaDEU.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaAFK.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaRUS.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaCSY.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaSQI.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaTRK.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaELL.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "..\Release\VisitsRotaHUN.dll"; DestDir: "{app}"; Flags: overwritereadonly ignoreversion
Source: "Styles\ElderlyInfirm-Schedule-v1.css"; DestDir: "{#CommonDataDir}"; Flags: overwritereadonly ignoreversion uninsremovereadonly touch; Attribs: readonly
Source: "Styles\ElderlyInfirm-Schedule-v1.xsl"; DestDir: "{#CommonDataDir}"; Flags: overwritereadonly ignoreversion uninsremovereadonly touch; Attribs: readonly
Source: "Styles\Shepherd-Schedule-v1.css"; DestDir: "{#CommonDataDir}"; Flags: overwritereadonly ignoreversion uninsremovereadonly touch; Attribs: readonly
Source: "Styles\Shepherd-Schedule-v1.xsl"; DestDir: "{#CommonDataDir}"; Flags: overwritereadonly ignoreversion uninsremovereadonly touch; Attribs: readonly

; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: ISSkinU.dll; DestDir: {app}; Flags: dontcopy

; Add the Visual Style resource contains resources used for skinning,
; you can also use Microsoft Visual Styles (*.msstyles) resources.
Source: Skins\{#Skin}; DestDir: {tmp}; Flags: dontcopy

[Icons]
Name: {group}\{#VR}; Filename: {app}\VisitsRota.exe
Name: {group}\{#VR} (64 bit); Filename: {app}\VisitsRota_x64.exe;
Name: "{userdesktop}\{#VR}"; Filename: {app}\VisitsRota.exe; Tasks: desktopicon; 
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#VR}"; Filename: {app}\VisitsRota.exe; MinVersion: 4,4; Tasks: quicklaunchicon; 
; Name: {group}\VisitsRota Help; Filename: {app}\VisitsRota.chm; WorkingDir: {app}; IconFilename: {win}\hh.exe; IconIndex: 0
; Name: {group}\VisitsRota Help (Suomi); Filename: {app}\VisitsRotaFIN.chm; WorkingDir: {app}; IconFilename: {win}\hh.exe; IconIndex: 0

[Run]
Filename: "{app}\VisitsRota.exe"; Description: {cm:LaunchProgram,VisitsRota}; Flags: nowait postinstall skipifsilent runasoriginaluser
Filename: "{app}\VisitsRota_x64.exe"; Flags: nowait postinstall runasoriginaluser unchecked skipifsilent; Description: "{cm:LaunchProgram,VisitsRota (64 bit)}"; Check: IsWin64

[Registry]
Root: "HKLM"; Subkey: "Software\TruckleSoft\VisitsRota"; ValueType: string; ValueName: "AppPath"; ValueData: "{app}\VisitsRota.exe"
Root: "HKLM64"; Subkey: "Software\TruckleSoft\VisitsRota"; ValueType: string; ValueName: "AppPath"; ValueData: "{app}\VisitsRota_x64.exe"; Check: IsWin64

; Language value is based on the language that the user has installed with
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_ENG}; Languages: English; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_ESP}; Languages: Spanish; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_ITA}; Languages: Italian; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_PTB}; Languages: PortugueseBrazil; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_SVE}; Languages: Swedish; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_FRA}; Languages: French; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_FIN}; Languages: Finnish; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_PLK}; Languages: Polish; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_DAN}; Languages: Danish; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_NLD}; Languages: Dutch; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_UKR}; Languages: Ukrainian; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_DEU}; Languages: German; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_AFK}; Languages: Afrikaans; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_RUS}; Languages: Russian; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_CSY}; Languages: Czech; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_SQI}; Languages: Albanian; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_TRK}; Languages: Turkish; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_ELL}; Languages: Greek; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_HUN}; Languages: Hungarian; Flags: uninsdeletevalue

Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_ENG}; Languages: English; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_ESP}; Languages: Spanish; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_ITA}; Languages: Italian; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_PTB}; Languages: PortugueseBrazil; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_SVE}; Languages: Swedish; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_FRA}; Languages: French; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_FIN}; Languages: Finnish; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_PLK}; Languages: Polish; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_DAN}; Languages: Danish; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_NLD}; Languages: Dutch; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_UKR}; Languages: Ukrainian; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_DEU}; Languages: German; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_AFK}; Languages: Afrikaans; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_RUS}; Languages: Russian; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_CSY}; Languages: Czech; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_SQI}; Languages: Albanian; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_TRK}; Languages: Turkish; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_ELL}; Languages: Greek; Flags: uninsdeletevalue; Check: IsWin64
Root: HKLM64; Subkey: Software\TruckleSoft\VisitsRota; ValueType: dword; ValueName: Language; ValueData: {#LANG_HUN}; Languages: Hungarian; Flags: uninsdeletevalue; Check: IsWin64

[Dirs]
Name: "{#DataDir}"; Flags: uninsalwaysuninstall

[InstallDelete]
Type: files; Name: "{app}\VisitsRotaENU.dll"

[Code]
program Setup;

// global variables
var
  bIsUpgrading: Boolean;

// Importing LoadSkin API from ISSkinU.DLL
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskinU.dll stdcall';

// Importing UnloadSkin API from ISSkinU.DLL
procedure UnloadSkin();
external 'UnloadSkin@files:isskinU.dll stdcall';

// Importing ShowWindow Windows API from User32.DLL
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';

// Returns the path where the program was last installed
function GetPathInstalled( AppID: String ): String;
var
    sPrevPath: String;
begin
    sPrevPath := '';
    if not RegQueryStringValue( HKLM,
        'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+AppID+'_is1',
        'Inno Setup: App Path', sPrevpath) then
        RegQueryStringValue( HKCU, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+AppID+'_is1' ,
                            'Inno Setup: App Path', sPrevpath);

    Result := sPrevPath;
end;

// Returns True if we are performing an upgrade
function IsUpgrading(): Boolean;
var
    sPrevPath: String;
begin
    sPrevPath := GetPathInstalled('{~~~~~}');
    if (Length(sPrevPath) > 0) and (FileExists(sPrevPath + '\VisitsRota.exe' )) then
        Result := True
    else
        Result := False;
end;

function MakeVersion(Major, Minor, Build: Cardinal): Cardinal;
begin
  Result := (Major shl 24) + (Minor shl 16) + Build;
end;

// Called just before setup is about to start
function InitializeSetup(): Boolean;
var
  WindowsVersion: Cardinal;
begin
  Result := True;

  ExtractTemporaryFile('{#Skin}');
  LoadSkin(ExpandConstant('{tmp}\{#Skin}'), '');

    // Are we performing an upgrade?
    bIsUpgrading := IsUpgrading();

  // Check Windows Version
  WindowsVersion := GetWindowsVersion;
  Log(Format('Windows Version: %x', [WindowsVersion]));
  // Windows must be Win 7 SP1 (6.1.7601), Win 8.1 (6.3.9200) or higher, eg: Win 10 (10.0.10240)
  // See: http://www.jrsoftware.org/ishelp/index.php?topic=winvernotes
  // Microsoft .Net Framework 4.6.2 will only work with these operating systems.
  if  (WindowsVersion <  MakeVersion(6, 1, 7601)) or
     ((WindowsVersion >= MakeVersion(6, 2, 0)) and (WindowsVersion < MakeVersion(6, 3, 0))) then
  begin
    MsgBox(SetupMessage(msgWindowsVersionNotSupported), mbError, MB_OK);
    Result := False;
  end;
end;

type
  TRunEntry = record
    Caption: string;
    Checked: Boolean;
    Object: TObject;
  end;

procedure RebuildRunList;
var
  RunEntries: array of TRunEntry;
  I: Integer;
begin
  // Save run list ...
  SetArrayLength(RunEntries, WizardForm.RunList.Items.Count);
  for I := 0 to WizardForm.RunList.Items.Count - 1 do
  begin
    RunEntries[I].Caption := WizardForm.RunList.ItemCaption[I];
    RunEntries[I].Checked := WizardForm.RunList.Checked[I];
    RunEntries[I].Object := WizardForm.RunList.ItemObject[I];
  end;

  // ... clear it ... 
  WizardForm.RunList.Items.Clear;

  // ... and re-create 
  for I := 0 to GetArrayLength(RunEntries) - 1 do
  begin
    // the first three entries are radio buttons 
    if (I = 0) or (I = 1) or (I = 2) then
    begin
      WizardForm.RunList.AddRadioButton(
        RunEntries[I].Caption, '', 0, RunEntries[I].Checked, True, RunEntries[I].Object);
    end
      else
    begin
      WizardForm.RunList.AddCheckBox(
        RunEntries[I].Caption, '', 0, RunEntries[I].Checked, True, True, True,
        RunEntries[I].Object);
    end;
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpFinished then
  begin
    // Only now is the RunList populated.
    // Two entries are on 64-bit systems only.
    if IsWin64 then RebuildRunList;
  end;
end;

procedure DeinitializeSetup();
begin
    // Hide Window before unloading skin so user does not get
    // a glimpse of an unskinned window before it is closed.
    ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
    UnloadSkin();
end;

更新

如果我卸载程序并尝试安装,则向导4看起来更好:

Window 4 New

我明白了-!!当我“升级”并且没有勾选任务时,“准备安装”页面上没有任何显示。如果我选择其中一个选项,则会显示一些内容。至少我知道现在发生了什么。

1 个答案:

答案 0 :(得分:2)

是的,当更改列表上没有任何内容可显示时,该列表是隐藏的。

您可以强制显示某物,例如:

  • AlwaysShowDirOnReadyPageAlwaysShowGroupOnReadyPage指令。

    [Setup]
    AlwaysShowDirOnReadyPage=yes
    AlwaysShowGroupOnReadyPage=yes
    
  • 使用UpdateReadyMemo event function

    [Code]
    
    procedure AppendReadyMemo(var Memo: string; NewLine: string; S: string);
    begin
      if S <> '' then
      begin
        if Memo <> '' then Memo := Memo + NewLine + NewLine;
        Memo := Memo + S;
      end;
    end;
    
    function UpdateReadyMemo(
      Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo,
      MemoGroupInfo, MemoTasksInfo: String): String;
    begin
      { This is what Inno Setup would do without UpdateReadyMemo }
      AppendReadyMemo(Result, NewLine, MemoUserInfoInfo); 
      AppendReadyMemo(Result, NewLine, MemoDirInfo); 
      AppendReadyMemo(Result, NewLine, MemoTypeInfo); 
      AppendReadyMemo(Result, NewLine, MemoComponentsInfo); 
      AppendReadyMemo(Result, NewLine, MemoGroupInfo); 
      AppendReadyMemo(Result, NewLine, MemoTasksInfo); 
    
      if Result = '' then
      begin
        Result := 'Keeping settings from previous installations';
      end;
    end;