我想使我的安装程序在x86 / x64窗口兼容,这意味着便携式。
我做innosetup安装程序只扩展一个x86 CLI可执行文件,并且我需要将其展开到C:\ windows \ system32目录,即使安装程序在Windows x64下运行,否则如果将其展开到C:\ Windows \ Syswow64目录,然后在Windows x64 CMD下无法识别该exe文件。
那么我应该怎样设置这个属性来使它在上面指定的条件下可移植呢?
ArchitecturesInstallIn64BitMode= ???
在这里扩展文件时,我应该使用什么标志?
Source: {sys}\My_x86_application.exe; DestDir: {sys}; Flags: ???
我已经玩了32Bit
, 64Bit
和Is64BitInstallMode
等一些标志,但我不能得到预期的结果,因为如果我知道限制常量{syswow64}
在Windows x86下引发安装错误…
UPDATE
这是我的安装脚本的相关部分,但它是错误的,它应该与x86和x64窗口(便携式)兼容,并且只在两个窗口下将Source: {sys}\*
文件扩展到C:\ Windows \ System32使用常量{sys}
来检测dirpath,当然)。
[Setup] DefaultDirName={pf32}\{#AppName} ArchitecturesAllowed=x86 x64 ArchitecturesInstallIn64BitMode=x64 [Files] Source: {app}\*; DestDir: {app}; Flags: ignoreversion Source: {sys}\*; DestDir: {sys}; Flags: ignoreversion 64bit
像你的问题部分回答:
ArchitecturesInstallIn64BitMode
有效值: 一个或多个以空格分隔的以下内容:
x64
ia64
默认值:( 空白)
说明: 指定安装程序应在64位模式下安装的64位处理器体系结构。 如果此指令未指定或为空,则安装程序将始终以32位模式安装。 通常情况下,除非应用程序包含本机64位二进制文件,否则不应将其改为默认值。
你有一个x86 EXE二进制文件,所以把这个字段留空 。
Source
(必填) 说明: 源文件的名称。 如果不指定完全限定的路径名,编译器会预先安装源代码目录的路径。
例:
Source: "My_x86_application.EXE"
如果没有任何类似上面条目的路径,可能是最佳的(对于小型项目,因为它会使用安装脚本来混淆文件)。 此外,请注意, 只有在 指定 external
标志 时才可以使用常量 ,因为编译器不会自行进行任何常量转换。 所以,下面的条目:
Source: {sys}\My_x86_application.exe; DestDir: {sys}
实际上希望使用安装脚本将二进制文件存储在目录的{sys}
子文件夹中。 如果不是这样,编译失败。
DestDir
(必填) 我想你可以使用{win}\System32
指定{win}\System32
。 由于Windows的x86和x64版本都包含System32目录。
Flags
和进一步的疑问澄清访问此页面。 编辑:将iss文件保存在您的x86 exe二进制文件所在的文件夹中。 然后运行它。