瀏覽代碼

Merge branch 'noitanium'

Martijn Laan 1 年之前
父節點
當前提交
aab23b8a3d

+ 1 - 2
Examples/64BitTwoArch.iss

@@ -24,8 +24,7 @@ OutputDir=userdocs:Inno Setup Examples Output
 ; On all other architectures it will install in "32-bit mode".
 ; On all other architectures it will install in "32-bit mode".
 ArchitecturesInstallIn64BitMode=x64compatible
 ArchitecturesInstallIn64BitMode=x64compatible
 ; Note: We don't set ArchitecturesAllowed because we want this
 ; Note: We don't set ArchitecturesAllowed because we want this
-; installation to run on all architectures (including Itanium,
-; since it's capable of running 32-bit code too).
+; installation to run on all architectures.
 
 
 [Files]
 [Files]
 ; Install MyProg-x64.exe if running in 64-bit mode (see above), and
 ; Install MyProg-x64.exe if running in 64-bit mode (see above), and

+ 0 - 2
Examples/MyProg/Myprog.c

@@ -7,8 +7,6 @@
 	#define ARCHNOTE TEXT("\n\n(This EXE was compiled for the x64 architecture.)")
 	#define ARCHNOTE TEXT("\n\n(This EXE was compiled for the x64 architecture.)")
 #elif defined(_M_ARM64)
 #elif defined(_M_ARM64)
 	#define ARCHNOTE TEXT("\n\n(This EXE was compiled for the Arm64 architecture.)")
 	#define ARCHNOTE TEXT("\n\n(This EXE was compiled for the Arm64 architecture.)")
-#elif defined(_IA64_)
-	#define ARCHNOTE TEXT("\n\n(This EXE was compiled for the Itanium architecture.)")
 #else
 #else
 	#error unknown arch
 	#error unknown arch
 #endif
 #endif

+ 2 - 8
ISHelp/isetup.xml

@@ -104,7 +104,7 @@ Inno Setup is a <i>free</i> installer for Windows programs by Jordan Russell and
 
 
 <li>Support for every Windows release since 2009, including: Windows 11, Windows 10, Windows 11 on Arm, Windows 10 on Arm, Windows Server 2019, Windows Server 2016, Windows 8.1, Windows 8, Windows Server 2012, Windows 7, and Windows Server 2008 R2. (No service packs are required.)</li>
 <li>Support for every Windows release since 2009, including: Windows 11, Windows 10, Windows 11 on Arm, Windows 10 on Arm, Windows Server 2019, Windows Server 2016, Windows 8.1, Windows 8, Windows Server 2012, Windows 7, and Windows Server 2008 R2. (No service packs are required.)</li>
 
 
-<li>Extensive support for installation of <link topic="32vs64bitinstalls">64-bit</link> applications on the 64-bit editions of Windows. The x64, Arm64 and Itanium architectures are all supported.</li>
+<li>Extensive support for installation of <link topic="32vs64bitinstalls">64-bit</link> applications on the 64-bit editions of Windows. The x64 and Arm64 architectures are both supported.</li>
 
 
 <li>Extensive support for both administrative and <link topic="admininstallmode">non administrative installations</link> installations.</li>
 <li>Extensive support for both administrative and <link topic="admininstallmode">non administrative installations</link> installations.</li>
 
 
@@ -1737,7 +1737,6 @@ Instructs Setup to proceed to comparing time stamps (last write/modified time) i
 <flag name="regtypelib">
 <flag name="regtypelib">
 <p>Register the type library (.tlb). The uninstaller will unregister the type library (unless the flag <tt>uninsneveruninstall</tt> is specified). As with the <tt>regserver</tt> flag, when used in combination with <tt>sharedfile</tt>, the file will only be unregistered by the uninstaller when the reference count reaches zero.</p>
 <p>Register the type library (.tlb). The uninstaller will unregister the type library (unless the flag <tt>uninsneveruninstall</tt> is specified). As with the <tt>regserver</tt> flag, when used in combination with <tt>sharedfile</tt>, the file will only be unregistered by the uninstaller when the reference count reaches zero.</p>
 <p>In <link topic="32vs64bitinstalls">64-bit install mode</link> running on an x64-compatible edition of Windows, the type library will be registered inside a 64-bit process. You can override this by specifying the <tt>32bit</tt> flag.</p>
 <p>In <link topic="32vs64bitinstalls">64-bit install mode</link> running on an x64-compatible edition of Windows, the type library will be registered inside a 64-bit process. You can override this by specifying the <tt>32bit</tt> flag.</p>
-<p>Registering type libraries in 64-bit mode on Itanium editions of Windows or on Windows 10 for Arm is not supported.</p>
 <p>See the <i>Remarks</i> at the bottom of this topic for more information.</p>
 <p>See the <i>Remarks</i> at the bottom of this topic for more information.</p>
 </flag>
 </flag>
 <flag name="replacesameversion">
 <flag name="replacesameversion">
@@ -2448,7 +2447,6 @@ If <tt>binary</tt> is specified, Setup will create a binary (REG_BINARY) value.<
 <p>For this parameter to have an effect the current user must be able to change the permissions on the registry key. In the event these conditions are not met, no error message will be displayed, and the permissions will not be set.</p>
 <p>For this parameter to have an effect the current user must be able to change the permissions on the registry key. In the event these conditions are not met, no error message will be displayed, and the permissions will not be set.</p>
 <p>This parameter should <i>only</i> be used on registry keys private to your application. Never change the ACLs on a top-level key like HKEY_LOCAL_MACHINE\SOFTWARE, otherwise you can open up security holes on your users' systems.</p>
 <p>This parameter should <i>only</i> be used on registry keys private to your application. Never change the ACLs on a top-level key like HKEY_LOCAL_MACHINE\SOFTWARE, otherwise you can open up security holes on your users' systems.</p>
 <p>The specified permissions are set regardless of whether the registry key existed prior to installation. The permissions are not set if <tt>ValueType</tt> is <tt>none</tt> and the <tt>deletekey</tt> flag or <tt>deletevalue</tt> flag is used.</p>
 <p>The specified permissions are set regardless of whether the registry key existed prior to installation. The permissions are not set if <tt>ValueType</tt> is <tt>none</tt> and the <tt>deletekey</tt> flag or <tt>deletevalue</tt> flag is used.</p>
-<p>On Itanium editions of Windows, this parameter is only effectual on 32-bit registry keys. (There is no such limitation on x64 editions of Windows.)</p>
 <p>This parameter can include one or more space separated values in the format:</p>
 <p>This parameter can include one or more space separated values in the format:</p>
 <indent><p><tt><link topic="usergroupids">&lt;user or group identifier&gt;</link>-&lt;access type&gt;</tt></p></indent>
 <indent><p><tt><link topic="usergroupids">&lt;user or group identifier&gt;</link>-&lt;access type&gt;</tt></p></indent>
 <p>The following access types are supported for the [Registry] section:</p>
 <p>The following access types are supported for the [Registry] section:</p>
@@ -5298,8 +5296,6 @@ DiskSliceSize=1457664
 <keyword value="x86" />
 <keyword value="x86" />
 <keyword value="AMD64" />
 <keyword value="AMD64" />
 <keyword value="x64" />
 <keyword value="x64" />
-<keyword value="IA-64" />
-<keyword value="Itanium" />
 <keyword value="Arm64" />
 <keyword value="Arm64" />
 <setupvalid>A space separated list of <link topic="archidentifiers">architecture identifiers</link>.<br />
 <setupvalid>A space separated list of <link topic="archidentifiers">architecture identifiers</link>.<br />
 Or, a boolean expression containing <link topic="archidentifiers">architecture identifiers</link>. See <link topic="componentstasksparams">Components and Tasks parameters</link> for examples of boolean expressions.</setupvalid>
 Or, a boolean expression containing <link topic="archidentifiers">architecture identifiers</link>. See <link topic="componentstasksparams">Components and Tasks parameters</link> for examples of boolean expressions.</setupvalid>
@@ -5308,7 +5304,7 @@ Or, a boolean expression containing <link topic="archidentifiers">architecture i
 <p>Specifies which processor architecture(s) Setup is allowed to run on. If this directive is not specified or is blank, Setup will be allowed to run on all processor architectures capable of executing its 32-bit code (including ones it doesn't recognize). Otherwise, if a user's processor architecture is not one of those specified in this directive, Setup will display an error message and exit.</p>
 <p>Specifies which processor architecture(s) Setup is allowed to run on. If this directive is not specified or is blank, Setup will be allowed to run on all processor architectures capable of executing its 32-bit code (including ones it doesn't recognize). Otherwise, if a user's processor architecture is not one of those specified in this directive, Setup will display an error message and exit.</p>
 <p>If your application's binaries are all 32-bit and run in user mode, you should not change this directive from its default value (specifically, don't set it to <tt>x86</tt>), because normally such binaries will run without issue on the 64-bit Windows via the WOW64 emulator.</p>
 <p>If your application's binaries are all 32-bit and run in user mode, you should not change this directive from its default value (specifically, don't set it to <tt>x86</tt>), because normally such binaries will run without issue on the 64-bit Windows via the WOW64 emulator.</p>
 <p>If you install any 32-bit device drivers, you should set this directive to <tt>x86</tt>, as 32-bit device drivers cannot function on 64-bit Windows.</p>
 <p>If you install any 32-bit device drivers, you should set this directive to <tt>x86</tt>, as 32-bit device drivers cannot function on 64-bit Windows.</p>
-<p>If your application's binaries are built for the x64, Arm64 or Itanium architectures, you should set this directive to either <tt>x64compatible</tt>, <tt>arm64</tt> or <tt>ia64</tt> respectively.</p>
+<p>If your application's binaries are built for the x64 or Arm64 architectures, you should set this directive to either <tt>x64compatible</tt> or <tt>arm64</tt> respectively.</p>
 <examples>
 <examples>
 <pre>
 <pre>
 ; Only allow installation on systems that aren't x64-compatible.
 ; Only allow installation on systems that aren't x64-compatible.
@@ -5350,8 +5346,6 @@ ArchitecturesAllowed=win64
 <keyword value="64-bit install mode" />
 <keyword value="64-bit install mode" />
 <keyword value="AMD64" />
 <keyword value="AMD64" />
 <keyword value="x64" />
 <keyword value="x64" />
-<keyword value="IA-64" />
-<keyword value="Itanium" />
 <keyword value="Arm64" />
 <keyword value="Arm64" />
 <setupvalid>A space separated list of <link topic="archidentifiers">architecture identifiers</link>.<br />
 <setupvalid>A space separated list of <link topic="archidentifiers">architecture identifiers</link>.<br />
 Or, a boolean expression containing <link topic="archidentifiers">architecture identifiers</link>. See <link topic="componentstasksparams">Components and Tasks parameters</link> for examples of boolean expressions.</setupvalid>
 Or, a boolean expression containing <link topic="archidentifiers">architecture identifiers</link>. See <link topic="componentstasksparams">Components and Tasks parameters</link> for examples of boolean expressions.</setupvalid>

+ 1 - 22
ISHelp/isxfunc.xml

@@ -472,37 +472,16 @@ end;</pre></example>
         <prototype>function ProcessorArchitecture: TSetupProcessorArchitecture;</prototype>
         <prototype>function ProcessorArchitecture: TSetupProcessorArchitecture;</prototype>
         <description><p>Returns the native processor architecture of the current system.</p>
         <description><p>Returns the native processor architecture of the current system.</p>
 <p>TSetupProcessorArchitecture is defined as:</p>
 <p>TSetupProcessorArchitecture is defined as:</p>
-<p><tt>TSetupProcessorArchitecture = (paUnknown, paX86, paX64, paIA64, paArm64, paArm32);</tt></p></description>
+<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>
         <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>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>
-<p>If <tt>paIA64</tt> is returned, and <tt>ia64</tt> is <i>not</i> included in the value of the <link topic="setup_architecturesinstallin64bitmode">ArchitecturesInstallIn64BitMode</link> [Setup] section directive, you should not assume that Inno Setup's 64-bit-only features are available -- for example, the <tt>{autopf64}</tt> constant. Those features only work when <link topic="isxfunc_IsWin64">IsWin64</link> returns True, and as documented, it may not return True on older Itanium versions of Windows that lack certain APIs Inno Setup requires.</p>
-<p>Therefore, instead of:</p>
-<pre>
-  if ProcessorArchitecture = paIA64 then
-    // perform some Itanium-specific install task that
-    // involves expanding {autopf64}
-</pre>
-<p>you should additionally check that IsWin64 returns True:</p>
-<pre>
-  if ProcessorArchitecture = paIA64 then
-  begin
-    if IsWin64 then
-      // perform some Itanium-specific install task that
-      // involves expanding {autopf64}
-    else
-      // cannot use 64-bit features; display an error message,
-      // fail silently, try something else, etc.
-  end;
-</pre>
-<p>If <tt>ia64</tt> <i>is</i> included in the value of the <link topic="setup_architecturesinstallin64bitmode">ArchitecturesInstallIn64BitMode</link> [Setup] section directive, then it is not necessary to check IsWin64 because Setup will do so itself at startup, and fail with an error message (<tt>MissingWOW64APIs</tt>) if it is False.</p></remarks>
         <example><pre>var
         <example><pre>var
   S: String;
   S: String;
 begin
 begin
   case ProcessorArchitecture of
   case ProcessorArchitecture of
     paX86: S := 'x86';
     paX86: S := 'x86';
     paX64: S := 'x64';
     paX64: S := 'x64';
-    paIA64: S := 'Itanium';
     paArm64: S := 'Arm64';
     paArm64: S := 'Arm64';
   else
   else
     S := 'Unrecognized';
     S := 'Unrecognized';

+ 2 - 2
Projects/Src/Compile.pas

@@ -2912,8 +2912,8 @@ end;
 function TSetupCompiler.EvalArchitectureIdentifier(Sender: TSimpleExpression;
 function TSetupCompiler.EvalArchitectureIdentifier(Sender: TSimpleExpression;
   const Name: String; const Parameters: array of const): Boolean;
   const Name: String; const Parameters: array of const): Boolean;
 const
 const
-  ArchIdentifiers: array[0..9] of String = (
-    'arm32compatible', 'arm64', 'ia64', 'win64',
+  ArchIdentifiers: array[0..8] of String = (
+    'arm32compatible', 'arm64', 'win64',
     'x64', 'x64os', 'x64compatible',
     'x64', 'x64os', 'x64compatible',
     'x86', 'x86os', 'x86compatible');
     'x86', 'x86os', 'x86compatible');
 begin
 begin

+ 5 - 5
Projects/Src/Main.pas

@@ -499,10 +499,9 @@ type
   end;
   end;
 const
 const
   { Valid identifier 'win64' is not in this list but treated specially below }
   { Valid identifier 'win64' is not in this list but treated specially below }
-  ArchIdentifiers: array[0..8] of TArchIdentifierRec = (
+  ArchIdentifiers: array[0..7] of TArchIdentifierRec = (
     (Name: 'arm32compatible'; Arch: paArm32; Compatible: True),
     (Name: 'arm32compatible'; Arch: paArm32; Compatible: True),
     (Name: 'arm64'; Arch: paArm64; Compatible: False),
     (Name: 'arm64'; Arch: paArm64; Compatible: False),
-    (Name: 'ia64'; Arch: paIA64; Compatible: False),
     (Name: 'x64'; Arch: paX64; Compatible: False),
     (Name: 'x64'; Arch: paX64; Compatible: False),
     (Name: 'x64os'; Arch: paX64; Compatible: False),
     (Name: 'x64os'; Arch: paX64; Compatible: False),
     (Name: 'x64compatible'; Arch: paX64; Compatible: True),
     (Name: 'x64compatible'; Arch: paX64; Compatible: True),
@@ -3254,8 +3253,9 @@ begin
   end;
   end;
   
   
   { Check processor architecture }
   { Check processor architecture }
-  if (SetupHeader.ArchitecturesAllowed <> '') and
-     not EvalExpression(SetupHeader.ArchitecturesAllowed, TDummyClass.EvalArchitectureIdentifier) then
+  if (ProcessorArchitecture = paIA64) or { Remove once Windows 8 (6.2+) becomes the new minimum }
+     ((SetupHeader.ArchitecturesAllowed <> '') and
+      not EvalExpression(SetupHeader.ArchitecturesAllowed, TDummyClass.EvalArchitectureIdentifier)) then
     AbortInit(msgWindowsVersionNotSupported);
     AbortInit(msgWindowsVersionNotSupported);
 
 
   { Check Windows version }
   { Check Windows version }
@@ -4409,7 +4409,7 @@ begin
     4. GetSystemWow64DirectoryA is available.
     4. GetSystemWow64DirectoryA is available.
     5. RegDeleteKeyExA is available.
     5. RegDeleteKeyExA is available.
     The system does not have to be one of the known 64-bit architectures
     The system does not have to be one of the known 64-bit architectures
-    (AMD64, IA64, Arm64) to be considered a "Win64" system. }
+    to be considered a "Win64" system. }
 
 
   IsWin64 := False;
   IsWin64 := False;
 
 

+ 1 - 2
Projects/Src/ScriptFunc.pas

@@ -201,7 +201,7 @@ const
   );
   );
 
 
   { Main }
   { Main }
-  MainTable: array [0..33] of AnsiString =
+  MainTable: array [0..32] of AnsiString =
   (
   (
     'function GetWizardForm: TWizardForm;',
     'function GetWizardForm: TWizardForm;',
     'function GetMainForm: TMainForm;',
     'function GetMainForm: TMainForm;',
@@ -227,7 +227,6 @@ const
     'function ProcessorArchitecture: TSetupProcessorArchitecture;',
     'function ProcessorArchitecture: TSetupProcessorArchitecture;',
     'function IsArm32Compatible: Boolean',
     'function IsArm32Compatible: Boolean',
     'function IsArm64: Boolean',
     'function IsArm64: Boolean',
-    'function IsIA64: Boolean',
     'function IsX64: Boolean',
     'function IsX64: Boolean',
     'function IsX64OS: Boolean',
     'function IsX64OS: Boolean',
     'function IsX64Compatible: Boolean',
     'function IsX64Compatible: Boolean',

+ 1 - 1
Projects/Src/ScriptFunc_R.pas

@@ -1094,7 +1094,7 @@ begin
     Stack.SetBool(PStart, Is64BitInstallMode);
     Stack.SetBool(PStart, Is64BitInstallMode);
   end else if Proc.Name = 'PROCESSORARCHITECTURE' then begin
   end else if Proc.Name = 'PROCESSORARCHITECTURE' then begin
     Stack.SetInt(PStart, Integer(ProcessorArchitecture));
     Stack.SetInt(PStart, Integer(ProcessorArchitecture));
-  end else if (Proc.Name = 'ISARM32COMPATIBLE') or (Proc.Name = 'ISARM64') or (Proc.Name = 'ISIA64') or
+  end else if (Proc.Name = 'ISARM32COMPATIBLE') or (Proc.Name = 'ISARM64') or
               (Proc.Name = 'ISX64') or (Proc.Name = 'ISX64OS') or (Proc.Name = 'ISX64COMPATIBLE') or
               (Proc.Name = 'ISX64') or (Proc.Name = 'ISX64OS') or (Proc.Name = 'ISX64COMPATIBLE') or
               (Proc.Name = 'ISX86') or (Proc.Name = 'ISX86OS') or (Proc.Name = 'ISX86COMPATIBLE') then begin
               (Proc.Name = 'ISX86') or (Proc.Name = 'ISX86OS') or (Proc.Name = 'ISX86COMPATIBLE') then begin
     var ArchitectureIdentifier := LowerCase(Copy(String(Proc.Name), 3, MaxInt));
     var ArchitectureIdentifier := LowerCase(Copy(String(Proc.Name), 3, MaxInt));

+ 2 - 2
whatsnew.htm

@@ -95,7 +95,6 @@ function InitializeSetup: Boolean;
 begin
 begin
   if IsArm32Compatible then Log('IsArm32Compatible');
   if IsArm32Compatible then Log('IsArm32Compatible');
   if IsArm64 then Log('IsArm64');
   if IsArm64 then Log('IsArm64');
-  if IsIA64 then Log('IsIA64');
   if IsX64OS then Log('IsX64OS');
   if IsX64OS then Log('IsX64OS');
   if IsX64Compatible then Log('IsX64Compatible');
   if IsX64Compatible then Log('IsX64Compatible');
   if IsX86 then Log('IsX86');
   if IsX86 then Log('IsX86');
@@ -113,9 +112,10 @@ end;</pre>
   <li>The selected and mouseover #include file tabs now show close buttons.</li>
   <li>The selected and mouseover #include file tabs now show close buttons.</li>
   <li>Added a clickable panel to the Status Bar showing the amount of closed tabs if there are any.</li>
   <li>Added a clickable panel to the Status Bar showing the amount of closed tabs if there are any.</li>
 </ul>
 </ul>
-<p><span class="head2">Support for Windows Vista and Windows Server 2008 removed</span></p>
+<p><span class="head2">Support for Windows Vista, Windows Server 2008 and the Itanium processor architecture removed</span></p>
 <ul>
 <ul>
   <li><b>OS requirements change:</b> Windows Vista and Windows Server 2008 are no longer supported. Windows 7 and Windows Server 2008 R2 are now the minimum supported operating systems. [Setup] section directive <tt>MinVersion</tt> still defaults to <tt>6.1sp1</tt>, so by default Setup will still not run versions of Windows 7 and Windows Server 2008 R2 which have not been updated.</li>
   <li><b>OS requirements change:</b> Windows Vista and Windows Server 2008 are no longer supported. Windows 7 and Windows Server 2008 R2 are now the minimum supported operating systems. [Setup] section directive <tt>MinVersion</tt> still defaults to <tt>6.1sp1</tt>, so by default Setup will still not run versions of Windows 7 and Windows Server 2008 R2 which have not been updated.</li>
+  <li>The Itanium processor architecture is no longer supported. The <tt>ia64</tt> platform identifier has been removed and instead Setup will always display an error message and exit if it's started on an Itanium system anyway.</li>
   <li>Removed [Icons] section flag <tt>foldershortcut</tt> which was already ignored except when running on Windows Vista or Windows Server 2008, as folder shortcuts do not expand properly on the Start Menu anymore.</li>
   <li>Removed [Icons] section flag <tt>foldershortcut</tt> which was already ignored except when running on Windows Vista or Windows Server 2008, as folder shortcuts do not expand properly on the Start Menu anymore.</li>
 </ul>
 </ul>
 <p><span class="head2">Other changes</span></p>
 <p><span class="head2">Other changes</span></p>