我想我很快就会后悔选择使用 InstallShield 而不是 WiX 的那一天。
我对 WiX 有一些经验,使用起来似乎有点复杂,所以当真正的项目来临时,我选择使用新的 Flexera InstallShield LE for Visual Studio 2010。起初它看起来很简单,我创建并编译了第一个安装项目,没有任何问题。它甚至设法从一些第 3 方库中提取 COM 信息(据我所知,它是使用 VC 6 编译的)。
但是当我在同一个解决方案中添加更多 InstallShield 安装 (ISL) 项目时,出现了奇怪的问题。如果我编辑一个 ISL 项目的一般信息页面,然后单击 Save All 按钮,突然间信息会与其他 ISL 项目的部分混淆,一些字段显示为 UNITITIALIZED STRING,而一些字段只是混淆了。当我打开其他 ISL 项目时,我发现那里的信息也很混乱。唯一的解决方案似乎是在编辑常规信息页面时卸载所有其他 ISL 项目。
问题二:崩溃。我的项目是一个混合的 C++/C# 应用程序。有时在编辑非托管 C++ 代码时,Visual Studio 只是在某些特定操作(如注释掉某些代码块、剪切、粘贴)时崩溃。我什至安装了 Visual Studio 2010 SP1,但这并没有帮助。当我卸载所有 ISL 项目时,崩溃完全停止了。
无论如何,我很沮丧,现在我有一个选择:
留在 ISL,创建我自己的可执行文件,它将被安装并运行 regsvr32。我仍然不得不忍受 Visual Studio 崩溃和一般信息页面问题。
移至 Windows 安装程序 XML。但是我不确定现在是什么阶段,我不会有同样的问题吗?WiX 可以为我注册 COM(也可以使用 syswow64 文件夹中的 regsvr32 在 64 位系统上注册 32 位 dll)吗?Visual Studio 2010 稳定吗?
我非常感谢您对我应该做什么的建议 - 继续使用 ISL 或迁移到 WiX,尤其是那些在 Visual Studio 2010 上经验丰富的 WiX 用户的建议。