Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inno setup 即使在指定了ArchitectureSInstallin64位模式后,Inno安装程序也会以32位启动_Inno Setup - Fatal编程技术网

Inno setup 即使在指定了ArchitectureSInstallin64位模式后,Inno安装程序也会以32位启动

Inno setup 即使在指定了ArchitectureSInstallin64位模式后,Inno安装程序也会以32位启动,inno-setup,Inno Setup,我正在64位Windows操作系统(Windows Server 2012 R2)上运行一个使用InnoSetup生成的安装程序,安装了ArchitecturesInstallIn64BitMode=x64和ArchitecturesAllowed=x64,但我仍然看到进程以32位模式启动。我是否错过了其他一些基本设置 操作系统详细信息: Microsoft Windows [Version 6.3.9600] (c) 2013 Microsoft Corporation. All rights

我正在64位Windows操作系统(Windows Server 2012 R2)上运行一个使用InnoSetup生成的安装程序,安装了
ArchitecturesInstallIn64BitMode=x64
ArchitecturesAllowed=x64
,但我仍然看到进程以32位模式启动。我是否错过了其他一些基本设置

操作系统详细信息:

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Users>wmic OS get OSArchitecture
OSArchitecture
64-bit

C:\Users>echo %PROCESSOR_ARCHITECTURE%
AMD64

C:\Users>systeminfo | findstr /I type:
OS Build Type:             Multiprocessor Free
System Type:               x64-based PC

C:\Users>
创新设置:

任务管理器: 这就是任务管理器显示的内容(我已经屏蔽了一些名称等)

回答:
根据注释部分,Inno安装程序始终生成32位安装程序可执行文件。没有生成64位安装程序的机制。我误解了文档。

早在Delphi支持64位可执行文件生成之前,Inno安装程序就开始支持64位安装。因此,其核心可执行文件为32位,并作为32位进程执行:

Inno安装程序是一个32位应用程序

要在保留32位进程的同时将文件安装到64位Windows文件夹,必须禁用WOW64重定向:

当文件/目录被那些部分访问时,安装程序暂时禁用WOW64文件系统重定向

这就解释了你观察到的情况

引用可在官方文章中找到:

Inno Setup创建的安装程序始终为32位

不幸的是,这意味着如果您的应用程序是64位的,并且某人正在安装的环境只支持64位,那么它将无法工作。例如,在仅支持64位的Wine下运行时,可能会发生这种情况。CentOS实施Wine的情况似乎就是如此。因此,所有Inno安装程序安装都将失败(即使是64位程序),因为它无法运行32位程序。多亏了我的一位客户,我才意识到这种情况


更新:请参阅此处EPEL部分的说明:

只要安装程序将文件插入正确的位置,其可执行文件使用的位数就无关紧要。如果事情如此简单明了,就不需要有32位vs 64位安装模式的概念,只要有文档记录即可。如果您遇到了更具体的问题,请说出来。请参阅:“安装模式:32位vs.64位”“如果用户运行的是64位版本的Windows,并且系统的处理器体系结构包含在ArchitecturesInstallIn64BitMode[Setup]部分指令的值中,则选择64位模式。否则,将使用32位模式。”所记录的并没有发生。好吧,这取决于你在读哪一行。“Inno安装程序是一个32位应用程序”解释了为什么您会看到它是一个32位进程。然后在“64位模式”下,安装进程禁用WOW64重定向,并将自己伪装成64位进程。