InstallShield 限量版 - 一般信息页面问题和 VS 2010 崩溃
我想我很快就会后悔我选择使用 InstallShield 而不是 WiX 的那一天。
我对 WiX 有一些经验,而且使用起来似乎有点复杂,所以当真正的项目到来时,我选择使用新的 Flexera InstallShield LE for Visual Studio 2010。 起初看起来很简单,我创建并编译了第一个安装项目,没有任何问题。它甚至设法从一些第三方库中提取 COM 信息(据我所知,该库是使用 VC 6 编译的)。
但是,当我向同一解决方案添加更多 InstallShield 安装 (ISL) 项目时,出现了奇怪的问题。如果我编辑一个 ISL 项目的“常规信息”页面,然后单击“全部保存”按钮,突然间信息会与其他 ISL 项目的部分内容混淆,某些字段显示为 UNITITIALIZED STRING,而某些字段则完全混淆。当我打开其他 ISL 项目时,我发现那里的信息也很混乱。唯一的解决方案似乎是在编辑“常规信息”页面时卸载所有其他 ISL 项目。
问题二:崩溃。我的项目是一个混合 C++/C# 应用程序。有时,在编辑非托管 C++ 代码时,Visual Studio 只是在执行某些特定操作时崩溃(例如注释掉某些代码块、剪切、粘贴)。我什至安装了 Visual Studio 2010 SP1,但这没有帮助。当我卸载所有 ISL 项目时,崩溃完全停止发生。
不管怎样,我很沮丧,现在我有一个选择:
继续使用 ISL,创建我自己的可执行文件,该可执行文件将被安装并运行 regsvr32。尽管如此,我还是不得不忍受 Visual Studio 崩溃和一般信息页面问题。
移至 Windows Installer XML。但我不知道现在处于什么阶段,我会不会遇到同样的问题? WiX 可以为我注册 COM(也可以使用 syswow64 文件夹中的 regsvr32 在 64 位系统上注册 32 位 dll)吗?它在 Visual Studio 2010 中稳定吗?
我非常感谢您对我应该做什么的建议 - 继续使用 ISL 还是转向 WiX,特别是来自那些在 Visual Studio 2010 上经验丰富的 WiX 用户的建议。
I think I'll soon will regret the day I chose to use InstallShield and not WiX.
I had a bit of experience with WiX, and it seemed a bit complicated to use, so when the time came for a real project, I chose to use the new Flexera InstallShield LE for Visual Studio 2010.
At first it seemed so easy, I created and compiled the first installation project without any issues. It even managed to extract COM information from some 3rd party library (which was compiled using VC 6, as far as I know).
But when I added some more InstallShield installation (ISL) projects to the same solution, strange problems appeared. If I edit the General information page of one ISL project and then click Save All button, suddenly the information gets messed up with parts from other ISL projects, some fields show up as UNITITIALIZED STRING, and some fields just mix up. And when I open the other ISL projects, I see, that the info is messed up there, too. The only solution seems to be to unload all other ISL projects while editing the General information page.
The problem number two: crashes. My project is a mixed C++/C# application. Sometimes while editing unmanaged C++ code, Visual Studio just crashes on some certain operations (like commenting out some blocks of code, cutting, pasting). I even installed Visual Studio 2010 SP1, but that did not help. The crashes completely stopped occurring when I unloaded all ISL projects.
Anyway, I am frustrated and now I have a choice:
stay with ISL, create my own executable which will get installed and will run regsvr32. Still I'll have to live with Visual Studio crashes and General Information page problems.
move to Windows Installer XML. But I am not sure at what stage it is now, won't I have the same problems? Can WiX register COMs for me (also can it register 32 bit dlls on 64 bit systems using regsvr32 from syswow64 folder)? Is it stable with Visual Studio 2010?
I will really appreciate your suggestions about what should I do - stay with ISL or move to WiX, especially from those who are experienced WiX users on Visual Studio 2010.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我强烈建议您迁移安装程序以使用 Windows Installer XML (WiX)。
我几年前就这样做了,并且从未回头。 :)
Wix v3.5 非常稳定。
我在使用它与 Visual Studio 的集成以及它的许多其他功能时没有遇到任何问题。
它是开源的,社区非常有帮助。
您可以使用 heat.exe 从文件中提取 COM 信息。
http://wix.sourceforge.net/manual-wix3/heat.htm
例如,您可以使用内置安静执行 CustomAction 在目标计算机上调用 regsvr32.exe
http://wix.sourceforge.net/manual-wix3/qtexec.htm
该链接还记录了如何运行 64 位可执行文件。
例如,您可以使用 [SystemFolder] 属性来执行 c:\windows\syswow64 中的文件。
http://msdn.microsoft.com/en-us/library/aa372055.aspx
WiX 的 DTF 技术非常适合在 C# 中编写 msi 自定义操作。
HTH。
I would highly recommend migrating your setup installers to use Windows Installer XML (WiX).
I did this years ago and have never looked back. :)
Wix v3.5 is very stable.
I haven't had any problems with its integration with Visual Studio, among a lot of its other features.
It's open source and the community is very helpful.
You can use heat.exe to extract COM information from a file.
http://wix.sourceforge.net/manual-wix3/heat.htm
You can call regsvr32.exe for example on the target machine using the built-in Quiet Execution CustomAction
http://wix.sourceforge.net/manual-wix3/qtexec.htm
That link also documents how to run 64-bit executables.
You can use the [SystemFolder] property to execute a file in c:\windows\syswow64 for example.
http://msdn.microsoft.com/en-us/library/aa372055.aspx
WiX's DTF technology is perfect for writing msi custom actions in c#.
HTH.