繁体   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