簡體   English   中英

64 位應用程序的應用程序清單

[英]Application manifest for 64 bit applications

我創建了一個 64 位 Windows 應用程序,並希望包含一個應用程序清單。

我比較了其他供應商的幾個 DLL,例如 shell32.dll ,發現他們將值“x86”設置為processorArchitecture 例子:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
  xmlns="urn:schemas-microsoft-com:asm.v1"
  manifestVersion="1.0">
<assemblyIdentity
    name="...."
    processorArchitecture="x86"
    version="...."
    type="win32"/>
<description>....</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly> 

我的問題:

  1. 64 位應用程序獲得帶有 processorArchitecture="x86" 的清單真的可以嗎?

  2. Microsoft 處理器架構描述如下:

指定處理器。 有效值為 32 位 Windows 的 x86 和 64 位 Windows 的 ia64。 可選的。

這讓我很困惑。 為什么 amd64 / x86-64 沒有列出? 我有一個 64 位 Windows,但我沒有 Intel Itanium 架構。

2021 年 7 月:Microsoft 已更新說明。 新的描述是:“指定處理器。有效值包括 x86、amd64、arm 和 arm64。可選。”

  1. 根據清單,我的 64 位應用程序依賴於“Microsoft.Windows.Common-Controls”和 processorArchitecture="x86" 是否可以? 如果我的應用程序“使用”像 comctl32.dll 這樣的 DLL 來顯示控件,我認為它必須是相同的體系結構,因為 64 位不能在沒有 thunk 的情況下綁定 32 位。

Windows 10 不會檢查標識您的應用程序的processorArchitecture屬性。您可以省略它。

該屬性在dependentAssembly元素下必須具有正確的值。 但是,為了簡單起見,您可以使用processorArchitecture="*"

如果你想明確一點, amd64是 x86-64 架構的正確值。 僅記錄ia64顯然是 Microsoft 文檔中的一個遺漏。 我已經提交了一個pull request來糾正這個問題。

shell32.dll在我的 Windows 10 副本中指定amd64

暫無
暫無

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

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