在Windows x86和x64下将x86.exe展开到“C:\ Windows \ System32”?

我想使我的安装程序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: ??? 

我已经玩了32Bit64BitIs64BitInstallMode等一些标志,但我不能得到预期的结果,因为如果我知道限制常量{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 

像你的问题部分回答:

  1. ArchitecturesInstallIn64BitMode

    有效值: 一个或多个以空格分隔的以下内容:

    • x64
    • ia64

默认值:( 空白)

说明: 指定安装程序应在64位模式下安装的64位处理器体系结构。 如果此指令未指定或为空,则安装程序将始终以32位模式安装。 通常情况下,除非应用程序包含本机64位二进制文​​件,否则不应将其改为默认值。

你有一个x86 EXE二进制文件,所以把这个字段留空

  1. Source (必填)

说明: 源文件的名称。 如果不指定完全限定的路径名​​,编译器会预先安装源代码目录的路径。

例:

 Source: "My_x86_application.EXE" 

如果没有任何类似上面条目的路径,可能是最佳的(对于小型项目,因为它会使用安装脚本来混淆文件)。 此外,请注意, 只有在 指定 external 标志 时才可以使用常量 ,因为编译器不会自行进行任何常量转换。 所以,下面的条目:

 Source: {sys}\My_x86_application.exe; DestDir: {sys} 

实际上希望使用安装脚本将二进制文件存储在目录的{sys}子文件夹中。 如果不是这样,编译失败。

  1. DestDir (必填)

我想你可以使用{win}\System32指定{win}\System32 。 由于Windows的x86x64版本都包含System32目录。

  1. 对于Flags和进一步的疑问澄清访问此页面。

编辑:将iss文件保存在您的x86 exe二进制文件所在的文件夹中。 然后运行它。