簡體   English   中英

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

[英]Expand an x86 .exe to 'C:\Windows\System32' under both Windows x86 and x64?

我想使我的安裝程序在x86 / x64 Windows下都兼容,這意味着可移植。

我做了innosetup安裝程序只是為了擴展x86 CLI可執行文件,即使安裝程序在Windows x64下運行,我也需要將其擴展到C:\\ windows \\ system32目錄,因為否則,如果將其擴展到C:\\ Windows \\ syswow64目錄,則在Windows x64 CMD下無法識別exe。

那么,如何設置此屬性以使其在上述指定條件下可移植?

ArchitecturesInstallIn64BitMode= ???

以及在此處擴展文件時應使用哪些標志?

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

我已經使用了一些標志,例如32Bit64BitIs64BitInstallMode ,但是我無法獲得預期的結果,因為如果我知道受限常量為{syswow64}會在Windows x86下引發安裝錯誤...

更新

這是我安裝腳本的相關部分,但是這是錯誤的,它應該與x86和x64 Windows(便攜式)兼容,並且僅將Source: {sys}\\*文件擴展到兩個窗口下的C:\\ Windows \\ System32 (當然,使用常量{sys}檢測目錄路徑)。

[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 (必填)

我想,你可以隨時使用指定System32下 {win}\\System32 由於Windows的x86x64版本都包含System32目錄。

  1. 對於Flags和進一步的疑問澄清,請訪問頁面。

編輯:將iss文件保存在x86 exe二進制文件存在的文件夾中。 然后運行它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM