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