Jelajahi Sumber

Merge branch 'main' into vcproj-update

Martijn Laan 1 tahun lalu
induk
melakukan
1a96ba4602

+ 1 - 1
CONTRIBUTING.md

@@ -58,4 +58,4 @@ To contribute translations please see https://jrsoftware.org/files/istrans/send.
 
 Please do NOT use GitHub's web editor to edit ANSI translations and create pull
 requests. This editor doesn't work since it automatically turns ANSI files into
-UTF8 files without a BOM which are not supported (only UTF8 with a BOM is).
+UTF8 files without a BOM which are not supported before Inno Setup 6.3.

+ 1 - 1
Components/FolderTreeView.pas

@@ -134,7 +134,7 @@ implementation
 }
 
 uses
-  PathFunc, ShellApi, UxTheme, Types;
+  PathFunc, ShellApi, NewUxTheme, Types;
 
 const
   SHPPFW_NONE = $00000000;

+ 1 - 1
Components/NewCheckListBox.pas

@@ -15,7 +15,7 @@ interface
 
 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
-  StdCtrls, UxTheme;
+  StdCtrls, NewUxTheme;
 
 const
   WM_UPDATEUISTATE = $0128;

+ 5 - 2
Components/NewTabSet.pas

@@ -13,7 +13,7 @@ interface
 
 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Math, Generics.Collections,
-  ModernColors, UxTheme;
+  ModernColors, NewUxTheme;
 
 type
   TTabPosition = (tpTop, tpBottom);
@@ -84,7 +84,7 @@ procedure Register;
 implementation
 
 uses
-  WinApi.UxTheme, Types;
+  Types;
 
 procedure Register;
 begin
@@ -367,6 +367,9 @@ var
   HighColorMode: Boolean;
 
   procedure DrawCloseButton(const TabRect: TRect; const TabIndex: Integer);
+  const
+    MENU_SYSTEMCLOSE = 17;
+    MSYSC_NORMAL = 1;
   begin
    if (TabIndex < FCloseButtons.Count) and FCloseButtons[TabIndex] then begin
       var R := GetCloseButtonRect(TabRect);

+ 3 - 2
Components/UxTheme.pas → Components/NewUxTheme.pas

@@ -47,9 +47,10 @@
 { Simplified by Martijn Laan for Inno Setup }
 
 { Cannot be replaced by Delphi's built in Winapi.UxTheme.pas even though it has
-  the same functions: see the comment at the bottom of this file. }
+  the same functions: see the comment at the bottom of this file. For this
+  reason this unit has been renamed to NewUxTheme.  }
 
-unit UxTheme;
+unit NewUxTheme;
 
 interface
 

+ 1 - 1
Components/TmSchema.pas

@@ -44,7 +44,7 @@
 {                                                                              }
 {******************************************************************************}
 
-{ Simplified by Martijn Laan for Inno Setup and Delphi 2 }
+{ Simplified by Martijn Laan for Inno Setup }
 
 unit TmSchema;
 

+ 1 - 1
Files/Languages/Dutch.isl

@@ -2,7 +2,7 @@
 ;
 ; This file is based on user-contributed translations by various authors
 ;
-; Maintained by Martijn Laan (mlaan@jrsoftware.org)
+; Maintained by Martijn Laan (mlaan@innosetup.nl)
                                      
 [LangOptions]                
 LanguageName=Nederlands      

+ 7 - 21
ISHelp/isetup.xml

@@ -1581,18 +1581,6 @@ ExternalSize: 1048576; Flags: external
 </example>
 </param>
 
-<param name="CopyMode">
-<p>You should not use this parameter in any new scripts. This parameter was deprecated and replaced by flags in Inno Setup 3.0.5:</p>
-<p>
-<tt>CopyMode: normal -&gt; Flags: promptifolder</tt><br/>
-<tt>CopyMode: alwaysskipifsameorolder -&gt; </tt>no flags<br/>
-<tt>CopyMode: onlyifdoesntexist -&gt; Flags: onlyifdoesntexist</tt><br/>
-<tt>CopyMode: alwaysoverwrite -&gt; Flags: ignoreversion</tt><br/>
-<tt>CopyMode: dontcopy -&gt; Flags: dontcopy</tt>
-</p>
-<p>What was <tt>CopyMode: alwaysskipifsameorolder</tt> is now the default behavior. (The previous default was <tt>CopyMode: normal</tt>.)</p>
-</param>
-
 <param name="Attribs">
 <p>Specifies additional attributes for the file. This can include one or more of the following: <tt>readonly</tt>, <tt>hidden</tt>, <tt>system</tt>, <tt>notcontentindexed</tt>. If this parameter is not specified, Setup does not assign any special attributes to the file.</p>
 <example>
@@ -3534,7 +3522,7 @@ Keep the default set of selected tasks, but deselect the "desktopicon" task:<br/
 <keyword value="return codes" />
 <body>
 
-<p>Beginning with Inno Setup 3.0.3, the Setup program may return one of the following exit codes:</p>
+<p>The Setup program may return one of the following exit codes:</p>
 
 <table>
 
@@ -3591,14 +3579,14 @@ Keep the default set of selected tasks, but deselect the "desktopicon" task:<br/
 <tr>
 <td><b>7</b></td>
 <td>
-<p>The <link topic="wizardpages"><i>Preparing to Install</i></link> stage determined that Setup cannot proceed with installation. <i>(First introduced in Inno Setup 5.4.1.)</i></p>
+<p>The <link topic="wizardpages"><i>Preparing to Install</i></link> stage determined that Setup cannot proceed with installation.</p>
 </td>
 </tr>
 
 <tr>
 <td><b>8</b></td>
 <td>
-<p>The <link topic="wizardpages"><i>Preparing to Install</i></link> stage determined that Setup cannot proceed with installation, and that the system needs to be restarted in order to correct the problem. <i>(First introduced in Inno Setup 5.4.1.)</i></p>
+<p>The <link topic="wizardpages"><i>Preparing to Install</i></link> stage determined that Setup cannot proceed with installation, and that the system needs to be restarted in order to correct the problem.</p>
 </td>
 </tr>
 
@@ -3673,7 +3661,7 @@ Keep the default set of selected tasks, but deselect the "desktopicon" task:<br/
 <keyword value="return codes" />
 <body>
 
-<p>Beginning with Inno Setup 4.0.8, the uninstaller will return a non-zero exit code if the user cancels or a fatal error is encountered. Programs checking the exit code to detect failure should not check for a specific non-zero value; any non-zero exit code indicates that the uninstaller was not run to completion.</p>
+<p>The uninstaller will return a non-zero exit code if the user cancels or a fatal error is encountered. Programs checking the exit code to detect failure should not check for a specific non-zero value; any non-zero exit code indicates that the uninstaller was not run to completion.</p>
 
 <p>Note that at the moment you get an exit code back from the uninstaller, some code related to uninstallation might still be running. Because Windows doesn't allow programs to delete their own EXEs, the uninstaller creates and spawns a copy of itself in the TEMP directory. This "clone" performs the actual uninstallation, and at the end, terminates the original uninstaller EXE (at which point you get an exit code back), deletes it, then displays the "uninstall complete" message box (if it hasn't been suppressed with /SILENT or /VERYSILENT).</p>
 
@@ -4647,7 +4635,7 @@ DiskSliceSize=1457664
 <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
 <setupdefault><tt>yes</tt></setupdefault>
 <body>
-<p>If set to <tt>no</tt>, the user will not be allowed to enter a UNC path (such as "\\server\share") on the <i>Select Destination Location</i> page of the wizard. This was the default behavior in Inno Setup 2.0.17 and earlier.</p>
+<p>If set to <tt>no</tt>, the user will not be allowed to enter a UNC path (such as "\\server\share") on the <i>Select Destination Location</i> page of the wizard.</p>
 <p>To fully disallow installation to network locations, you must also set <link topic="setup_allownetworkdrive">AllowNetworkDrive</link> to <tt>no</tt>.</p>
 </body>
 </setuptopic>
@@ -4917,7 +4905,7 @@ DiskSliceSize=1457664
 <setupdefault><tt>yes</tt></setupdefault>
 <body>
 <p>If set to <tt>yes</tt>, the default, the wizard images will be stretched or shrunk if the images are larger or smaller than required.</p>
-<p>If set to <tt>no</tt>, the wizard images will be centered in their respective areas if the images are larger than required, and clipped if the images are smaller than required. (This corresponds to the default behavior of Inno Setup 4.1.2 and earlier.)</p>
+<p>If set to <tt>no</tt>, the wizard images will be centered in their respective areas if the images are larger than required, and clipped if the images are smaller than required.</p>
 </body>
 </setuptopic>
 
@@ -5039,7 +5027,6 @@ DiskSliceSize=1457664
 <body>
 <p>Specifies the name of the font that should be used in dialogs on languages that do not set <tt>DialogFontName</tt> in their <link topic="langoptionssection">[LangOptions] section</link>.</p>
 <p>If the specified font name does not exist on the user's system or is an empty string, 8-point Microsoft Sans Serif or MS Sans Serif will be substituted.</p>
-<p>Prior to the introduction of the <tt>DefaultDialogFontName</tt> directive in Inno Setup 5.3.9, the default dialog font name was always an empty string.</p>
 </body>
 </setuptopic>
 
@@ -5687,8 +5674,7 @@ SignTool=byparam format c:
 <p>When a new version of an application is installed over an existing version, instead of creating a new uninstall log file (unins???.dat), Setup will by default look for and append to an existing uninstall log file that belongs to the <link topic="sameappnotes">same application</link> and is in the same directory. This way, when the application is uninstalled, changes made by all the different installations will be undone (starting with the most recent installation).</p>
 <p>The uninstaller will use the <link topic="messagessection">messages</link> from the most recent installation of the application. However, there is an exception: if an installation was built with an older version of Inno Setup that included an older version of the uninstaller than the existing one on the user's system, neither the existing uninstaller nor its messages will be replaced. In this case the uninstall log will still be appended to, though, since the file format is backward compatible.</p>
 <p>The application name displayed in the uninstaller will be the same as the value of the <tt>[Setup]</tt> section directive <link topic="setup_appname">AppName</link> from the most recent installation, unless <link topic="setup_updateuninstalllogappname">UpdateUninstallLogAppName</link> is set to <tt>no</tt>.</p>
-<p>The uninstall log-appending feature is new to Inno Setup 1.3. If you wish to disable it, set the <tt>[Setup]</tt> section directive <link topic="setup_uninstalllogmode">UninstallLogMode</link>.</p>
-<p><i>Note:</i> Setup can only append to uninstall log files that were created by an Inno Setup 1.3.1 (or later) installation.</p>
+<p>To disable the uninstall log-appending feature set the <tt>[Setup]</tt> section directive <link topic="setup_uninstalllogmode">UninstallLogMode</link>.</p>
 </body>
 </topic>
 

+ 1 - 1
ISHelp/isxfunc.xml

@@ -475,7 +475,7 @@ end;</pre></example>
 <p><tt>TSetupProcessorArchitecture = (paUnknown, paX86, paX64, paArm64, paArm32);</tt></p></description>
         <remarks><p>A 64-bit processor architecture will never be returned on 32-bit versions of Windows. Hence, you cannot use this function to detect a 64-bit AMD CPU on a 32-bit version of Windows; you'll just get back <tt>paX86</tt> if you try.</p>
 <p><tt>paUnknown</tt> is returned if Setup/Uninstall does not recognize the processor architecture. It can be assumed that an "unknown" architecture is at least capable of executing 32-bit code, or Setup/Uninstall wouldn't be running at all.</p>
-<p><tt>paArm32</tt> is never returned because Setup/Uninstall does not run on 32-bit versions of Windows for Arm32.</p>
+<p><tt>paArm32</tt> is never returned because Setup/Uninstall does not run on 32-bit versions of Windows for Arm32.</p></remarks>
         <example><pre>var
   S: String;
 begin

+ 1 - 1
Projects/Compil32.dpr

@@ -27,7 +27,7 @@ uses
   CompWizardFile in 'Src\CompWizardFile.pas' {WizardFileForm},
   CompFileAssoc in 'Src\CompFileAssoc.pas',
   TmSchema in '..\Components\TmSchema.pas',
-  UxTheme in '..\Components\UxTheme.pas',
+  NewUxTheme in '..\Components\NewUxTheme.pas',
   DebugStruct in 'Src\DebugStruct.pas',
   BrowseFunc in 'Src\BrowseFunc.pas',
   CompSignTools in 'Src\CompSignTools.pas' {SignToolsForm},

+ 1 - 1
Projects/Compil32.dproj

@@ -102,7 +102,7 @@
         </DCCReference>
         <DCCReference Include="Src\CompFileAssoc.pas"/>
         <DCCReference Include="..\Components\TmSchema.pas"/>
-        <DCCReference Include="..\Components\UxTheme.pas"/>
+        <DCCReference Include="..\Components\NewUxTheme.pas"/>
         <DCCReference Include="Src\DebugStruct.pas"/>
         <DCCReference Include="Src\BrowseFunc.pas"/>
         <DCCReference Include="Src\CompSignTools.pas">

+ 2 - 1
Projects/Setup.dpr

@@ -86,7 +86,8 @@ uses
   DotNet in 'Src\DotNet.pas',
   SetupEnt in 'Src\SetupEnt.pas',
   Msi in 'Src\Msi.pas',
-  DotNetVersion in 'Src\DotNetVersion.pas';
+  DotNetVersion in 'Src\DotNetVersion.pas',
+  NewUxTheme in '..\Components\NewUxTheme.pas';
 
 {$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED}
 {$SETPEOSVERSION 6.1}

+ 1 - 0
Projects/Setup.dproj

@@ -163,6 +163,7 @@
         <DCCReference Include="Src\SetupEnt.pas"/>
         <DCCReference Include="Src\Msi.pas"/>
         <DCCReference Include="Src\DotNetVersion.pas"/>
+        <DCCReference Include="..\Components\NewUxTheme.pas"/>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
         </BuildConfiguration>

+ 1 - 1
Projects/Src/CompForm.pas

@@ -25,7 +25,7 @@ uses
   Windows, Messages, SysUtils, Classes, Contnrs, Graphics, Controls, Forms, Dialogs, CommDlg,
   Generics.Collections, UIStateForm, StdCtrls, ExtCtrls, Menus, Buttons, ComCtrls, CommCtrl,
   ScintInt, ScintEdit, ScintStylerInnoSetup, NewTabSet, ModernColors, CompScintEdit,
-  DebugStruct, CompInt, UxTheme, ImageList, ImgList, ToolWin, CompFunc,
+  DebugStruct, CompInt, NewUxTheme, ImageList, ImgList, ToolWin, CompFunc,
   VirtualImageList, BaseImageCollection, ImageCollection;
 
 const

+ 17 - 20
Projects/Src/Main.pas

@@ -3251,11 +3251,17 @@ begin
         SetActiveLanguage(I);
     end;
   end;
+
+  { Check unsupported Itanium - must be on Windows Server 2008 R2 so remove once
+    this becomes unsupported as well and Windows 8 (6.2+) becomes the new minimum }
+  var SysInfo: TSystemInfo;
+  GetNativeSystemInfo(SysInfo);
+  if SysInfo.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_IA64 then
+    AbortInit(msgWindowsVersionNotSupported);
   
-  { Check processor architecture }
-  if (ProcessorArchitecture = paIA64) or { Remove once Windows 8 (6.2+) becomes the new minimum }
-     ((SetupHeader.ArchitecturesAllowed <> '') and
-      not EvalExpression(SetupHeader.ArchitecturesAllowed, TDummyClass.EvalArchitectureIdentifier)) then
+  { Check allowed processor architectures }
+  if (SetupHeader.ArchitecturesAllowed <> '') and
+     not EvalExpression(SetupHeader.ArchitecturesAllowed, TDummyClass.EvalArchitectureIdentifier) then
     AbortInit(msgWindowsVersionNotSupported);
 
   { Check Windows version }
@@ -4387,7 +4393,6 @@ const
   UserEnabled = $1;
 var
   KernelModule: HMODULE;
-  GetNativeSystemInfoFunc: procedure(var lpSystemInfo: TSystemInfo); stdcall;
   IsWow64ProcessFunc: function(hProcess: THandle; var Wow64Process: BOOL): BOOL; stdcall;
   IsWow64Process2Func: function(hProcess: THandle; var pProcessMachine, pNativeMachine: USHORT): BOOL; stdcall;
   GetMachineTypeAttributesFunc: function(Machine: USHORT; var MachineTypeAttributes: Integer): HRESULT; stdcall;
@@ -4402,8 +4407,7 @@ begin
     conditions are true:
     1. One of the following two is true:
        a. IsWow64Process2 is available, and returns True for the current process.
-       b. GetNativeSystemInfo is available +
-          IsWow64Process is available, and returns True for the current process.
+       b. IsWow64Process is available, and returns True for the current process.
     2. Wow64DisableWow64FsRedirection is available.
     3. Wow64RevertWow64FsRedirection is available.
     4. GetSystemWow64DirectoryA is available.
@@ -4420,27 +4424,21 @@ begin
     IsWin64 := True;
     case NativeMachine of
       IMAGE_FILE_MACHINE_I386: ProcessorArchitecture := paX86;
-      IMAGE_FILE_MACHINE_IA64: ProcessorArchitecture := paIA64;
       IMAGE_FILE_MACHINE_AMD64: ProcessorArchitecture := paX64;
       IMAGE_FILE_MACHINE_ARM64: ProcessorArchitecture := paArm64;
     else
       ProcessorArchitecture := paUnknown;
     end;
   end else begin
-    GetNativeSystemInfoFunc := GetProcAddress(KernelModule, 'GetNativeSystemInfo');
-    if Assigned(GetNativeSystemInfoFunc) then begin
-      GetNativeSystemInfoFunc(SysInfo);
-      IsWow64ProcessFunc := GetProcAddress(KernelModule, 'IsWow64Process');
-      if Assigned(IsWow64ProcessFunc) and
-         IsWow64ProcessFunc(GetCurrentProcess, Wow64Process) and
-         Wow64Process then
-        IsWin64 := True;
-    end else
-      GetSystemInfo(SysInfo);
+    IsWow64ProcessFunc := GetProcAddress(KernelModule, 'IsWow64Process');
+    if Assigned(IsWow64ProcessFunc) and
+       IsWow64ProcessFunc(GetCurrentProcess, Wow64Process) and
+       Wow64Process then
+      IsWin64 := True;
 
+    GetNativeSystemInfo(SysInfo);
     case SysInfo.wProcessorArchitecture of
       PROCESSOR_ARCHITECTURE_INTEL: ProcessorArchitecture := paX86;
-      PROCESSOR_ARCHITECTURE_IA64: ProcessorArchitecture := paIA64;
       PROCESSOR_ARCHITECTURE_AMD64: ProcessorArchitecture := paX64;
       PROCESSOR_ARCHITECTURE_ARM64: ProcessorArchitecture := paArm64;
     else
@@ -4459,7 +4457,6 @@ begin
     - x64: [paX86, paX64]
       (but not paX86 in a future x64 build of Inno Setup if Windows was installed
        without support for x86 binaries (which is possible with Windows Server))
-    - Itanium: [paX86, paIA64]
     - Arm64 Windows 10: [paX86, paArm64, paArm32]
       (Arm32 support detected, not just assumed)
     - Arm64 Windows 11: [paX86, paX64, paArm64, paArm32]

+ 0 - 4
Projects/Src/ScriptClasses_C.pas

@@ -546,7 +546,6 @@ begin
   end;
 end;
 
-{$IFNDEF PS_NOINT64}
 procedure RegisterDownloadWizardPage_C(Cl: TPSPascalCompiler);
 begin
   with CL.AddClassN(Cl.FindClass('TOutputProgressWizardPage'),'TDownloadWizardPage') do
@@ -560,7 +559,6 @@ begin
     RegisterMethod('procedure Show'); { Without this TOutputProgressWizardPage's Show will be called }
   end;
 end;
-{$ENDIF}
 
 procedure RegisterHandCursor_C(Cl: TPSPascalCompiler);
 begin
@@ -668,9 +666,7 @@ begin
   RegisterOutputMsgMemoWizardPage_C(Cl);
   RegisterOutputProgressWizardPage_C(Cl);
   RegisterOutputMarqueeProgressWizardPage_C(Cl);
-{$IFNDEF PS_NOINT64}
   RegisterDownloadWizardPage_C(Cl);
-{$ENDIF}
 
   RegisterHandCursor_C(Cl);
   

+ 0 - 4
Projects/Src/ScriptClasses_R.pas

@@ -327,7 +327,6 @@ begin
   end;
 end;
 
-{$IFNDEF PS_NOINT64}
 procedure TDownloadPageAbortedByUser_R(Self: TDownloadWizardPage; var T: Boolean); begin T := Self.AbortedByUser; end;
 
 procedure RegisterDownloadWizardPage_R(CL: TPSRuntimeClassImporter);
@@ -342,7 +341,6 @@ begin
     RegisterMethod(@TDownloadWizardPage.Show, 'Show');
   end;
 end;
-{$ENDIF}
 
 procedure RegisterHandCursor_R(Cl: TPSRuntimeClassImporter);
 const
@@ -445,9 +443,7 @@ begin
     RegisterOutputMsgMemoWizardPage_R(Cl);
     RegisterOutputProgressWizardPage_R(Cl);
     RegisterOutputMarqueeProgressWizardPage_R(Cl);
-{$IFNDEF PS_NOINT64}
     RegisterDownloadWizardPage_R(Cl);
-{$ENDIF}
 
     RegisterHandCursor_R(Cl);
 

+ 0 - 6
Projects/Src/ScriptDlg.pas

@@ -171,7 +171,6 @@ type
       procedure SetProgress(const Position, Max: Longint);
   end;
 
-{$IFNDEF PS_NOINT64}
   TDownloadWizardPage = class(TOutputProgressWizardPage)
     private
       FFiles: TObjectList;
@@ -195,7 +194,6 @@ type
     published
       property AbortButton: TNewButton read FAbortButton;
   end;
-{$ENDIF}
   
 implementation
 
@@ -915,8 +913,6 @@ begin
   InternalError('Cannot call TOutputMarqueeProgressWizardPage.SetProgress');
 end;
 
-{$IFNDEF PS_NOINT64}
-
 {--- OutputDownload ---}
 
 type
@@ -1052,6 +1048,4 @@ begin
   SetDownloadCredentials('', '');
 end;
 
-{$ENDIF}
-
 end.

+ 0 - 24
Projects/Src/ScriptFunc.pas

@@ -14,11 +14,7 @@ interface
 const
 
   { ScriptDlg }
-{$IFNDEF PS_NOINT64}
   ScriptDlgTable: array [0..14] of AnsiString =
-{$ELSE}
-  ScriptDlgTable: array [0..13] of AnsiString =
-{$ENDIF}
   (
     'function PageFromID(const ID: Integer): TWizardPage;',
     'function PageIndexFromID(const ID: Integer): Integer;',
@@ -31,9 +27,7 @@ const
     'function CreateOutputMsgMemoPage(const AfterID: Integer; const ACaption, ADescription, ASubCaption: String; const AMsg: AnsiString): TOutputMsgMemoWizardPage;',
     'function CreateOutputProgressPage(const ACaption, ADescription: String): TOutputProgressWizardPage;',
     'function CreateOutputMarqueeProgressPage(const ACaption, ADescription: String): TOutputMarqueeProgressWizardPage;',
-{$IFNDEF PS_NOINT64}
     'function CreateDownloadPage(const ACaption, ADescription: String; const OnDownloadProgress: TOnDownloadProgress): TDownloadWizardPage;',
-{$ENDIF}
     'function ScaleX(X: Integer): Integer;',
     'function ScaleY(Y: Integer): Integer;',
     'function CreateCustomForm: TSetupForm;'
@@ -128,28 +122,18 @@ const
   );
 
   { Install }
-{$IFNDEF PS_NOINT64}
   InstallTable: array [0..5] of AnsiString =
-{$ELSE}
-  InstallTable: array [0..2] of AnsiString =
-{$ENDIF}
   (
     'procedure ExtractTemporaryFile(const FileName: String);',
     'function ExtractTemporaryFiles(const Pattern: String): Integer;',
-{$IFNDEF PS_NOINT64}
     'function DownloadTemporaryFile(const Url, FileName, RequiredSHA256OfFile: String; const OnDownloadProgress: TOnDownloadProgress): Int64;',
     'function DownloadTemporaryFileSize(const Url: String): Int64;',
     'function DownloadTemporaryFileDate(const Url: String): String;',
     'procedure SetDownloadCredentials(const User, Pass: String);'
-{$ENDIF}
   );
 
   { InstFunc }
-{$IFNDEF PS_NOINT64}
   InstFuncTable: array [0..30] of AnsiString =
-{$ELSE}
-  InstFuncTable: array [0..29] of AnsiString =
-{$ENDIF}
   (
     'function CheckForMutexes(Mutexes: String): Boolean;',
     'function DecrementSharedCount(const Is64Bit: Boolean; const Filename: String): Boolean;',
@@ -168,9 +152,7 @@ const
     'function GetSHA256OfString(const S: AnsiString): String;',
     'function GetSHA256OfUnicodeString(const S: String): String;',
     'function GetSpaceOnDisk(const DriveRoot: String; const InMegabytes: Boolean; var Free, Total: Cardinal): Boolean;',
-{$IFNDEF PS_NOINT64}
     'function GetSpaceOnDisk64(const DriveRoot: String; var Free, Total: Int64): Boolean;',
-{$ENDIF}
     'function GetUserNameString: String;',
     //function GrantPermissionOnFile(const Filename: String; const Entries: TGrantPermissionEntry; const EntryCount: Integer): Boolean;
     //function GrantPermissionOnKey(const RootKey: HKEY; const Subkey: String; const Entries: TGrantPermissionEntry; const EntryCount: Integer): Boolean;
@@ -249,17 +231,11 @@ const
   );
 
   { System }
-{$IFNDEF PS_NOINT64}
   SystemTable: array [0..4] of AnsiString =
-{$ELSE}
-  SystemTable: array [0..3] of AnsiString =
-{$ENDIF}
   (
     'function Random(const Range: Integer): Integer;',
     'function FileSize(const Name: String; var Size: Integer): Boolean;',
-{$IFNDEF PS_NOINT64}
     'function FileSize64(const Name: String; var Size: Int64): Boolean;',
-{$ENDIF}
     'procedure Set8087CW(NewCW: Word);',
     'function Get8087CW: Word;'
   );

+ 0 - 2
Projects/Src/ScriptFunc_C.pas

@@ -141,9 +141,7 @@ begin
     '  SuiteMask: Word;' +
     'end');
 
-{$IFNDEF PS_NOINT64}
   RegisterType('TOnDownloadProgress', 'function(const Url, FileName: string; const Progress, ProgressMax: Int64): Boolean;');
-{$ENDIF}
 
   RegisterFunctionTable(ScriptDlgTable);
   RegisterFunctionTable(NewDiskTable);

+ 1 - 10
Projects/Src/ScriptFunc_R.pas

@@ -124,11 +124,9 @@ var
   NewOutputMsgMemoPage: TOutputMsgMemoWizardPage;
   NewOutputProgressPage: TOutputProgressWizardPage;
   NewOutputMarqueeProgressPage: TOutputMarqueeProgressWizardPage;
-{$IFNDEF PS_NOINT64}
   NewDownloadPage: TDownloadWizardPage;
   P: PPSVariantProcPtr;
   OnDownloadProgress: TOnDownloadProgress;
-{$ENDIF}
   NewSetupForm: TSetupForm;
 begin
   PStart := Stack.Count-1;
@@ -270,7 +268,6 @@ begin
       raise;
     end;
     Stack.SetClass(PStart, NewOutputMarqueeProgressPage);
-{$IFNDEF PS_NOINT64}
   end else if Proc.Name = 'CREATEDOWNLOADPAGE' then begin
     if IsUninstaller then
       NoUninstallFuncError(Proc.Name);
@@ -292,7 +289,6 @@ begin
       raise;
     end;
     Stack.SetClass(PStart, NewDownloadPage);
-{$ENDIF}
   end else if Proc.Name = 'SCALEX' then begin
     InitializeScaleBaseUnits;
     Stack.SetInt(PStart, MulDiv(Stack.GetInt(PStart-1), ScaleBaseUnitX, OrigBaseUnitX));
@@ -782,7 +778,6 @@ begin
     ExtractTemporaryFile(Stack.GetString(PStart));
   end else if Proc.Name = 'EXTRACTTEMPORARYFILES' then begin
     Stack.SetInt(PStart, ExtractTemporaryFiles(Stack.GetString(PStart-1)));
-{$IFNDEF PS_NOINT64}
   end else if Proc.Name = 'DOWNLOADTEMPORARYFILE' then begin
     P := Stack.Items[PStart-4];
     { ProcNo 0 means nil was passed by the script }
@@ -796,7 +791,7 @@ begin
   end else if Proc.Name = 'DOWNLOADTEMPORARYFILESIZE' then begin
     Stack.SetInt64(PStart, DownloadTemporaryFileSize(Stack.GetString(PStart-1)));
   end else if Proc.Name = 'DOWNLOADTEMPORARYFILEDATE' then begin
-    Stack.SetString(PStart, DownloadTemporaryFileDate(Stack.GetString(PStart-1)));{$ENDIF}
+    Stack.SetString(PStart, DownloadTemporaryFileDate(Stack.GetString(PStart-1)));
   end else
     Result := False;
 end;
@@ -871,7 +866,6 @@ begin
       Stack.SetBool(PStart, True);
     end else
       Stack.SetBool(PStart, False);
-{$IFNDEF PS_NOINT64}
   end else if Proc.Name = 'GETSPACEONDISK64' then begin
     if GetSpaceOnDisk(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), FreeBytes, TotalBytes) then begin
       Stack.SetInt64(PStart-2, Int64(FreeBytes.Hi) shl 32 + FreeBytes.Lo);
@@ -879,7 +873,6 @@ begin
       Stack.SetBool(PStart, True);
     end else
       Stack.SetBool(PStart, False);
-{$ENDIF}
   end else if Proc.Name = 'GETUSERNAMESTRING' then begin
     Stack.SetString(PStart, GetUserNameString());
   end else if Proc.Name = 'INCREMENTSHAREDCOUNT' then begin
@@ -1177,7 +1170,6 @@ begin
     except
       Stack.SetBool(PStart, False);
     end;
-{$IFNDEF PS_NOINT64}
   end else if Proc.Name = 'FILESIZE64' then begin
     try
       F := TFileRedir.Create(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), fdOpenExisting, faRead, fsReadWrite);
@@ -1191,7 +1183,6 @@ begin
     except
       Stack.SetBool(PStart, False);
     end;
-{$ENDIF}
   end else if Proc.Name = 'SET8087CW' then begin
     Set8087CW(Stack.GetInt(PStart));
   end else if Proc.Name = 'GET8087CW' then begin

+ 2 - 2
Projects/Src/Struct.pas

@@ -69,7 +69,7 @@ type
   TSetupLanguageDetectionMethod = (ldUILanguage, ldLocale, ldNone);
   TSetupCompressMethod = (cmStored, cmZip, cmBzip, cmLZMA, cmLZMA2);
   TSetupSalt = array[0..7] of Byte;
-  TSetupProcessorArchitecture = (paUnknown, paX86, paX64, paIA64, paArm32, paArm64);
+  TSetupProcessorArchitecture = (paUnknown, paX86, paX64, paArm32, paArm64);
   TSetupProcessorArchitectures = set of TSetupProcessorArchitecture;
   TSetupDisablePage = (dpAuto, dpNo, dpYes);
   TSetupPrivilegesRequired = (prNone, prPowerUser, prAdmin, prLowest);
@@ -78,7 +78,7 @@ type
   TSetupWizardStyle = (wsClassic, wsModern);
 const
   SetupProcessorArchitectureNames: array[TSetupProcessorArchitecture] of String =
-    ('Unknown', 'x86', 'x64', 'Itanium', 'Arm32', 'Arm64');
+    ('Unknown', 'x86', 'x64', 'Arm32', 'Arm64');
 
 const
   SetupHeaderStrings = 32;

+ 12 - 9
README.md

@@ -89,7 +89,7 @@ Component Installation
 ----------------------
 
 If you intend to view or modify the Setup project's forms, you must install
-the following component units, which can be found in the Components
+the following component units, which can be found in the [Components]
 directory.
 
 - BidiCtrls
@@ -108,7 +108,7 @@ additionally install the following components.
 - DropListBox
 - NewTabSet
 
-The Components directory contains a Components project which you can use to
+The [Components] directory contains a Components project which you can use to
 install all these components.
 
 If you only want to edit code, then you may skip installation of the
@@ -161,7 +161,7 @@ How do the projects link together?
 Source code tips
 ----------------
 
-- When building the projects in Debug mode it outputs to Projects\Bin and when
+- When building the projects in Debug mode it outputs to [Projects\Bin] and when
   debugging it will run from within this directory. To prepare this directory
   with some extra files you must run **Projects\Bin\synch-isfiles.bat**.
 
@@ -171,7 +171,7 @@ Source code tips
   This way you can simulate an actual installation while running under the
   Delphi debugger.
   
-- When building the projects in Release mode it outputs to Files.
+- When building the projects in Release mode it outputs to [Files].
   
 - All of the forms in the Setup project, with the exception of Main.dfm, have
   Scaled set to False. This is because they dynamically scale themselves at
@@ -184,7 +184,7 @@ Source code tips
 
 - To debug the uninstaller first run Setup.exe to completion with the
   ``/DETACHEDMSG`` command line parameter set. Afterwards copy uninst000.dat and
-  uninst000.msg as setup.dat and setup.msg to the Projects\Bin directory in your
+  uninst000.msg as setup.dat and setup.msg to the [Projects\Bin] directory in your
   issrc path. Then open the Setup project and set the command line parameters to
   ``/UNINSTMODE "/SECONDPHASE=<your issrc path\Projects\Bin\Setup.exe"`` and start
   debugging. Note: each time setup.dat and setup.msg will be deleted if you
@@ -203,7 +203,7 @@ from the bzlib directory in the Iscompress repository.
 from the zlib-dll directory in the Iscompress repository.
 
 **Files\islzma.dll**, **Files\islzma32.exe**, **Files\islzma64.exe** - Compiled
-by Visual Studio 2005 from the [Projects\Lzma2\Encoder] directory.
+by Visual Studio 2005 from the [Projects\Src\Lzma2\Encoder] directory.
 
 **Files\isscint.dll** - Compiled by Visual Studio 2005 from Scintilla 2.22 source
 code with scintilla-2.22-patch.txt applied.
@@ -273,10 +273,13 @@ workflow will be triggered automatically.
 
 <!-- Link references -->
 [CONTRIBUTING.md]: <CONTRIBUTING.md>
-[Projects\Lzma2\Encoder]: <Projects/Lzma2/Encoder>
+[Projects\Bin]: <Projects/Bin>
+[Components]: <Components>
+[Files]: <Files>
+[Projects\Src\Lzma2\Encoder]: <Projects/Src/Lzma2/Encoder>
 [Projects\Helper]: <Projects/Helper>
 [Examples\MyProg]: <Examples/MyProg>
-[Projects\LzmaDecode\compiling.txt]: <Projects/LzmaDecode/compiling.txt>
-[Projects\Lzma2\Decoder\compiling.txt]: <Projects/Lzma2/Decoder/compiling.txt>
+[Projects\Src\LzmaDecode\compiling.txt]: <Projects/Src/LzmaDecode/compiling.txt>
+[Projects\Src\Lzma2\Decoder\compiling.txt]: <Projects/Src/Lzma2/Decoder/compiling.txt>
 [7-Zip]: https://www.7-zip.org/
 [secret]: https://docs.github.com/en/actions/security-guides/encrypted-secrets

+ 1 - 1
whatsnew.htm

@@ -89,7 +89,7 @@ ArchitecturesAllowed=win64</pre>
   <li>[Registry] section parameter <tt>Permissions</tt> is now effectual on 64-bit registry keys on Windows 11 for Arm as well.</p>
   <li>Setup now logs the machine types supported by the system. For example, when running on Windows 11 for Arm it now logs: "Machine types supported by system: x86 x64 arm32 arm64".</li>
   <li>Message OnlyOnTheseArchitectures is not used anymore. Instead existing message WindowsVersionNotSupported is now shown when Setup is started on an architecture which is not allowed by the <tt>ArchitecturesAllowed</tt> expression. (But please do not remove the message from translation files.)<br/><br/></li>
-  <li>Pascal Scripting change: Add new <tt>IsArm32Compatible</tt>, <tt>IsX64Compatible</tt>, <tt>IsX64OS</tt>, <tt>IsX86Compatible</tt>, and <tt>IsX86OS</tt> support functions. The <tt>IsX64</tt> support function still exists but is now deprecated as explained above. Example testing all platform identifiers:
+  <li>Pascal Scripting change: Added new <tt>IsArm32Compatible</tt>, <tt>IsX64Compatible</tt>, <tt>IsX64OS</tt>, <tt>IsX86Compatible</tt>, and <tt>IsX86OS</tt> support functions. The <tt>IsX64</tt> support function still exists but is now deprecated as explained above. Example testing all platform identifiers:
       <pre>[Code]
 function InitializeSetup: Boolean;
 begin