Bladeren bron

Remove Itanium support.

Martijn Laan 1 jaar geleden
bovenliggende
commit
1b15b2af65

+ 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".
 ArchitecturesInstallIn64BitMode=x64compatible
 ; 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]
 ; 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.)")
 #elif defined(_M_ARM64)
 	#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
 	#error unknown arch
 #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>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>
 
@@ -1737,7 +1737,6 @@ Instructs Setup to proceed to comparing time stamps (last write/modified time) i
 <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>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>
 </flag>
 <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>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>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>
 <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>
@@ -5298,8 +5296,6 @@ DiskSliceSize=1457664
 <keyword value="x86" />
 <keyword value="AMD64" />
 <keyword value="x64" />
-<keyword value="IA-64" />
-<keyword value="Itanium" />
 <keyword value="Arm64" />
 <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>
@@ -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>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 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>
 <pre>
 ; Only allow installation on systems that aren't x64-compatible.
@@ -5350,8 +5346,6 @@ ArchitecturesAllowed=win64
 <keyword value="64-bit install mode" />
 <keyword value="AMD64" />
 <keyword value="x64" />
-<keyword value="IA-64" />
-<keyword value="Itanium" />
 <keyword value="Arm64" />
 <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>

+ 1 - 22
ISHelp/isxfunc.xml

@@ -472,37 +472,16 @@ end;</pre></example>
         <prototype>function ProcessorArchitecture: TSetupProcessorArchitecture;</prototype>
         <description><p>Returns the native processor architecture of the current system.</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>
 <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>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
   S: String;
 begin
   case ProcessorArchitecture of
     paX86: S := 'x86';
     paX64: S := 'x64';
-    paIA64: S := 'Itanium';
     paArm64: S := 'Arm64';
   else
     S := 'Unrecognized';

+ 2 - 2
Projects/Src/Compile.pas

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

+ 2 - 6
Projects/Src/Main.pas

@@ -499,10 +499,9 @@ type
   end;
 const
   { 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: 'arm64'; Arch: paArm64; Compatible: False),
-    (Name: 'ia64'; Arch: paIA64; Compatible: False),
     (Name: 'x64'; Arch: paX64; Compatible: False),
     (Name: 'x64os'; Arch: paX64; Compatible: False),
     (Name: 'x64compatible'; Arch: paX64; Compatible: True),
@@ -4409,7 +4408,7 @@ begin
     4. GetSystemWow64DirectoryA is available.
     5. RegDeleteKeyExA is available.
     The system does not have to be one of the known 64-bit architectures
-    (AMD64, IA64, Arm64) to be considered a "Win64" system. }
+    (AMD64, Arm64) to be considered a "Win64" system. }
 
   IsWin64 := False;
 
@@ -4420,7 +4419,6 @@ 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
@@ -4440,7 +4438,6 @@ begin
 
     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 +4456,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]

+ 1 - 2
Projects/Src/ScriptFunc.pas

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

+ 1 - 1
Projects/Src/ScriptFunc_R.pas

@@ -1094,7 +1094,7 @@ begin
     Stack.SetBool(PStart, Is64BitInstallMode);
   end else if Proc.Name = 'PROCESSORARCHITECTURE' then begin
     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 = 'ISX86') or (Proc.Name = 'ISX86OS') or (Proc.Name = 'ISX86COMPATIBLE') then begin
     var ArchitectureIdentifier := LowerCase(Copy(String(Proc.Name), 3, MaxInt));

+ 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;

+ 2 - 2
whatsnew.htm

@@ -94,7 +94,6 @@ function InitializeSetup: Boolean;
 begin
   if IsArm32Compatible then Log('IsArm32Compatible');
   if IsArm64 then Log('IsArm64');
-  if IsIA64 then Log('IsIA64');
   if IsX64OS then Log('IsX64OS');
   if IsX64Compatible then Log('IsX64Compatible');
   if IsX86 then Log('IsX86');
@@ -112,9 +111,10 @@ end;</pre>
   <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>
 </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>
   <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>
 </ul>
 <p><span class="head2">Other changes</span></p>