代码之家  ›  专栏  ›  技术社区  ›  Malfist

针对x86和x64的安装程序?

  •  18
  • Malfist  · 技术社区  · 16 年前

    我有一个同时需要x64和x86 DLL的程序(它会在运行时找出它需要哪些DLL),但在尝试创建安装程序时,它会抱怨:

    文件alphavss.winxp.x64.dll“targeting”amd64“与项目的目标平台”x86“不兼容”
    文件alphavss.win2003.x64.dll“targeting”amd64“与项目的目标平台”x86“不兼容”
    文件alphavss.win2008.x64.dll“targeting”amd64“与项目的目标平台”x86“不兼容”

    我怎样才能像我的程序一样把我的安装目标放在两个平台上?

    4 回复  |  直到 12 年前
        1
  •  11
  •   Magnus Johansson    16 年前

    安装项目(在Visual Studio中)创建的MSI一次只能针对一个平台。您的选择是要么制作2个MSI,将它们合并在一起,然后制作一个在两者之间选择的自定义安装引导程序。 有一些第三方产品,比如 Advanced Installer 例如,这可以为您做到这一点。

        2
  •  5
  •   Daren Thomas    14 年前

    我也碰到了这个 wrote a blog post 关于我的解决方案:

    • 使用deflate.exe对文件进行放气,并用不同的扩展名命名该文件(例如.x64)
    • 将其作为内容文件添加到主项目中
    • 向解决方案中添加自定义操作项目
    • 将自定义操作添加到安装项目“安装”自定义操作
    • 在自定义操作安装方法中使用充气文件
    • system.io.compression.deflatestream(见以上代码)
    • 在你的办公桌周围,大厅里,和你想惹麻烦的同事们跳一小段舞。

    这个 deflate.exe 文件可以从其 repository 谷歌代码。

        3
  •  1
  •   Joel Coehoorn    16 年前

    .NET有一个“任意CPU”选项。它更像是一个只使用较少的x86功能的“通用”选项,但实际上它允许每台计算机上的JIT编译器为该计算机选择适当的CPU类型。

    唯一不应该使用它的时间是,如果您知道您有不利于一个体系结构或另一个体系结构的依赖项或需求。例如:你知道你需要一个 许多 对于RAM,您依赖于32位本机DLL,或者您希望预编译该应用程序。

    这里有一个危险,因为您有一个特定于平台的DLL依赖性。但这两种类型都有DLL,听起来好像您知道如何在运行时选择正确的DLL。那么“任何CPU”选项对您有效吗?

        4
  •  -2
  •   MOHAMED SAKR    13 年前
    1. 打开部署项目。
    2. 在解决方案资源管理器中,选择部署项目。
    3. 在“属性”窗口中,选择TargetPlatform属性。
    4. 选择Itanium作为Intel Itanium 64位平台,或选择x64作为任何其他64位平台(如AMD64和EM64T指令集)。
    5. 安装时,如果目标计算机与指定的平台不兼容,将引发错误并停止安装。