我很难理解InstallShield如何处理升级。
我想要的是能够增加安装程序的版本号,重新编译和分发我的安装程序。这应该会自动删除任何以前版本的应用程序,并安装最新版本(并且应该以"升级"的形式呈现给用户。)
这是一个非常简单的安装程序,只需要从一些Visual Studio项目(一个应用程序EXE,一些DLL等)中输出并将它们全部安装到Program Files中。只有一个功能,它始终安装。
我不想更改产品的升级代码,因为我必须创建新的升级路径(每个以前版本一个),这很麻烦。
我之前尝试过此操作(增加版本号,但不更改产品代码或升级代码),但每次执行此操作时,我都会将安装程序运行到"升级"该产品,它说"恢复[ProductName]"的向导,有时一些文件不会被新版安装程序中的新版本替换。
我没有增加"版本"版本号的编号。我知道这被忽略了。通常情况下,我会尝试类似2.0.3 => 2.0.4
的内容。
如何设置InstallShield以便它自动删除任何以前的版本,安装最新版本,并将其作为"升级"或者"更新"如果他们已经安装了以前的版本?如果没有,它应该像平常一样安装("安装"而不是"更新")。
我使用的是InstallShield 2013 Pro(版本20 SP1),我坚持在Visual Studio 2010中使用InstallShield编辑器。
答案 0 :(得分:6)
您需要的是主要升级。这实际上是在您创建MSI的升级表,设置新的ProductVersion并更改包和产品代码之后,自动卸载现有版本并重新安装由Windows Installer Engine本身作为一个操作完成的新版本。这是Windows Installer中最不容易出错的更新机制。要在Installshield中实施主要升级,请转到“升级”视图并添加升级项。然后,您可以按照GUI向导或页面设置升级选项。我会看看我现在是否可以找到更好的链接,但这应该让你去。
要真正了解Windows Installer升级,您应该阅读this book chapter。或者这个Microsoft MSDN page。
只是为了完整性:次要升级 - 即升级现有安装而不卸载它,通常在开始时更难以完成。许多技术限制适用。以下是对次要升级工作所需内容(以及其他详细信息)的非常好的总结:http://www.installsite.org/pages/en/msi/updates.htm
答案 1 :(得分:0)
在这种情况下,您可以使用 COM自动化来使用Javascript或VBScript自动执行发布过程。如果您在Word或Excel之前已经自动化其他产品,则这是一个熟悉的过程。以下是一些可以开展的资源:
我使用这种VB脚本创建了一个构建过程,还有一个名为FinalBuilder的构建工具,它负责构建过程的其余部分。我想FinalBuilder可能会在此时对Installshield执行操作,因此您可以完全绕过脚本。我不确定。只是想链接到GUI,以便您可以看到该工具的外观。 Further screenshots