簡體   English   中英

是否同時針對x86和x64設置?

[英]Setup targeting both x86 and x64?

我有一個同時需要x64和x86 dll的程序(它可以確定運行時需要哪些dll),但是當嘗試創建安裝程序時,它抱怨:

目標為“ AMD64”的文件AlphaVSS.WinXP.x64.dll與該項目的目標平台“ x86”不兼容
目標為“ AMD64”的文件AlphaVSS.Win2003.x64.dll與該項目的目標平台“ x86”不兼容
目標為“ AMD64”的文件AlphaVSS.Win2008.x64.dll與該項目的目標平台“ x86”不兼容

如何使我的設置像程序一樣針對兩個平台?

安裝項目(在Visual Studio中)創建的MSI一次只能定位到一個平台。 您的選擇是制作兩個MSI,將它們合並在一起,然后制作一個在這兩者之間選擇的自定義安裝程序啟動打包程序。 有一些第三方產品,例如Advanced Installer ,可以為您完成此任務。

我也遇到了這個問題,並寫了一篇關於我的解決方案的博客文章

  • 使用deflate.exe壓縮文件,並使用其他擴展名(例如.x64)命名
  • 將其作為內容文件添加到您的主項目中
  • 將自定義操作項目添加到您的解決方案
  • 將自定義操作添加到安裝項目中“安裝”自定義操作
  • 使用以下命令在自定義操作Install方法中為文件充氣
  • System.IO.Compression.DeflateStream(請參見上面的代碼)
  • 在您的辦公桌周圍,大廳下,和您煩惱的盡可能多的同事一起跳一點舞:)

deflate.exe文件可以從其Google代碼倉庫中下載。

.Net具有“任何CPU”選項。 極有可能將其視為僅使用較少的x86功能的“通用”選項,但實際上,它允許每台計算機上的JIT編譯器為該計算機選擇適當的cpu類型。

唯一不應該使用它的時間是,如果您知道自己的依賴項或要求不利於一種體系結構或另一種體系結構。 例如:您知道您需要大量的內存,您對32位本機dll有依賴性,或者您想預編譯該應用程序。

這里存在危險,因為您具有特定於平台的dll依賴關系。 但是您同時擁有兩種類型的dll,這聽起來像您知道如何在運行時選擇正確的dll。 那么“ Any CPU”選項對您有用嗎?

  1. 打開一個部署項目。
  2. 在解決方案資源管理器中,選擇部署項目。
  3. 在“屬性”窗口中,選擇“ TargetPlatform”屬性。
  4. 為Intel Itanium 64位平台選擇Itanium,為任何其他64位平台(例如AMD64和EM64T指令集)選擇x64。
  5. 在安裝時,如果目標計算機與指定平台不兼容,將引發錯誤並中止安裝。

暫無
暫無

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

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