簡體   English   中英

防止使用 WIX 的 PROCESSOR_ARCHITECTURE 環境變量在 x64 上安裝 32 位 WIX 安裝程序

[英]Prevent to install 32 bit WIX installer on x64 using PROCESSOR_ARCHITECTURE Enviroment variables of WIX

我有一個適用於 32 位和 64 位平台的 Wix Setup msi。
我想阻止它在 64 位操作系統上安裝 32 位 msi,在 32 位操作系統上安裝 64 位 msi。
雖然 WIX 阻止在 32 位 msi 上安裝 64 位 msi,但我也想實現反向。

我正在使用以下代碼:-

<?if $(var.Platform)=x86 ?>
<Condition Message="Setup can not be installed on x64 machine.">
  <![CDATA[Installed OR Not VersionNT64]]>
</Condition>
<?endif?>

但它顯示在我的 msi 的歡迎頁面上。 我想顯示與我在 32 位操作系統上安裝 64 位 msi 時得到的消息相同的消息,例如

此處理器類型不支持安裝包。請聯系您的支持人員

我怎樣才能做到這一點?

那個條件應該有效! 我在想可能變量 Platform 沒有正確設置。

你也可以試試這個(這和你的幾乎一樣):

    <?if $(var.Platform) = x86 ?>
        <Condition Message="Setup can not be installed on x64 machine.">
            <![CDATA[Not VersionNT64]]>
        </Condition>
    <?endif?>

編輯:我在@Christopher Painter 評論后刪除了 Platform=x64 條件,因為您可以在 x64 msis 上免費獲得它。 我也嘗試了上面的代碼並且它有效。

我不相信您可以獲得與在 x86 系統上運行 x64 MSI 完全相同的行為。 在這種情況下,Windows 本身會在嘗試運行它並顯示消息之前檢查 MSI 體系結構。 你發明了你自己不必要的限制,所以你不能使用與 Windows 完全相同的方法。

但是我不知道為什么您會在歡迎頁面上看到您的消息。 我看到的所有啟動條件都是 Windows 提供的對話框(您在其中單擊“確定”),然后您通常會看到一個說安裝失敗的對話框(但同樣,該失敗對話框取決於您)。 所以你應該能夠得到一些接近於 Windows 所做的事情。

小的改進是使用 buildarch 環境而不是變量

<?if $(sys.BUILDARCH) = x86 ?>
    <Condition Message="Setup can not be installed on x64 machine.">
       <![CDATA[Not VersionNT64]]>
    </Condition>
<?endif?>

暫無
暫無

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

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