我使用 Visual Studio 2013 和 WiX Toolset 3.9 为我的 C# 项目进行了 MSI 设置。 结果是一个工作正常的 MSI 文件。
但我还需要一个 EXE 文件(应该做同样的事情,MSI 文件的作用),因为许多用户不知道 MSI 是什么。
当输出类型为“MSI”时,我可以编译该项目。当我将输出类型设置为“EXE”时,出现错误: “本地化标识符“ServiceDescription”已在多个位置重复。请解决冲突。” 这是因为我有两个 WXL 文件(一个用于英语,一个用于德语),并且它们具有相同的字符串 ID。
我不明白,为什么MSI编译可以,但EXE编译不行。
我的第二个问题是,我需要 MSI 和 EXE。因此,如果我编译该项目,我将自动获得这两个文件,那就太好了。我不想先编译 MSI,手动更改输出类型,然后编译 EXE。
那么我做错了什么?
最佳答案
我不明白你需要 EXE 的问题陈述,因为人们不知道 MSI 是什么。 MSI 已经问世 16 年,并在全局范围内使用。这对我来说没有意义。
根据我的经验,我仅在确实需要 EXE 时才使用 EXE。如果您只需要 MSI,那么坚持使用 MSI 会更简单。
EXE 的可能原因包括:
1)需要引导/链接其他包
2) 想要一个更好的非 MSI 用户界面
3) 想要一个提示语言选择的 UI
4) 想要在本地缓存 MSI
5) 想要检测以前的版本并传递次要升级命令行参数
6) 想要预先请求 UAC 提升(不是最佳实践)
7) 您需要多个实例服务功能。
8) 您想要一个网络下载器,可以根据需要从互联网上提取软件包。
9) 您想要用密码保护/加密 MSI。
10)其他可能不记得的场景。
一般来说,您并不总是需要一个 EXE 才能拥有一个 EXE。事实上,当您选择拥有一个时,设计和测试就会变得更加复杂。
如果您想要 EXE,您首先构建安装项目(输出:MSI),然后构建基于 WiX Burn 的 Bootstrap 项目(输出:EXE)
关于localization - WiX Toolset 设置的结果应该是 EXE 和 MSI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30192813/