[英]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.