c# - 为 x64 和 x86 创建具有依赖项的安装程序
问题描述
我正在用 C# 开发一个应用程序,它有几个依赖项,其中一个在 32 位或 64 位中是不同的。
当我编译应用程序时:这是编译的结果
在 x64 和 x86 文件夹中,找到了相同的依赖项 (SQLite.Interop.dll),但是一个特定于体系结构的文件 (x86: 1223 KB, x64: 1575 KB)。
正如标题中所说,我想使用 Visual Studo Installer 为这个应用程序创建一个安装程序。
当我将程序输出添加到“应用程序文件夹”时,所有依赖项都会出现,除了 x64 或 x86 文件夹中的依赖项。如何根据计算机的体系结构添加这个著名的依赖项?如果我必须创建 2 个不同的安装程序,我如何才能将此依赖项添加到每个安装程序?
先感谢您 !
解决方案
位数:不同的处理器架构需要不同的软件包。64 位安装程序可以安装 32 位和 64 位组件,32 位安装程序只能安装 32 位组件。32 位安装程序在 64 位系统上运行,但 64 位软件包不在 32 位系统上运行。换句话说,您需要两种不同的安装程序,一种用于 32 位,一种用于 64 位。
文件包含:我不使用此项目类型(原因将在下面清楚说明),但您应该能够通过手动添加文件Right Click Project => Add => File...
,然后编译两个单独的设置。
自定义操作:针对不同平台时,请注意自定义操作的位数问题。我通常使用 32 位代码构建自定义操作。
部署工具: Visual Studio 安装程序项目有一些众所周知的限制。也许可以快速查看其他常用工具(不同部署工具功能的简要总结)。
单一来源:高级安装程序做了一些奇特的事情,允许用一个来源定位两种架构。老实说,我不太确定他们做了什么。Installshield 有类似的结构。WiX 可以使用编译器变量/预处理器构造(底部)来实现相同的目的。
链接:
- Minimal WiX,Visual Studio 项目: WiX 安装程序 msi 未安装使用 Visual Studio 2017 创建的 Winform 应用程序(通常只需查看底部带有内联注释的标记就足够了)
- 调试会话: SQLite 的相对路径不适用于 WIX 工具集
推荐阅读
- pandas - 如果列值为 NaN,则熊猫数据框返回布尔值
- android - 如何用不同的手机发出通知?
- powerbi - Allexcept() 函数在扩展表中究竟返回什么?为什么?
- javascript - Javascript 或 angularJS :有可能获得浏览器 TAB 点击事件
- dialogflow-es - Dialogflow 推送通知设置不适用于 actions_intent_PERMISSION
- c++ - 移动物理对象以使穿透 = 0 的最小尺寸 Vec3
- javascript - 是否可以在脚本内的 php echo 中显示和隐藏按钮?
- curl - GitLab CI 获取最后一个工件
- android - 如何有条件地在 ionic 4 中设置根页面?
- asp.net-mvc - 在 httppost asp.net mvc 之后返回部分视图