6

我在理解 InstallShield 如何处理升级时遇到了一些麻烦。

我想要的是能够增加安装程序的版本号、重新编译和分发我的安装程序。这应该会自动删除任何以前版本的应用程序,并安装最新版本(它应该作为“升级”呈现给用户)。

这是一个非常简单的安装程序,它只从几个 Visual Studio 项目(应用程序 EXE、一些 DLL 等)中获取输出并将它们全部安装到 Program Files 中。只有一个功能,并且始终安装。

我不想更改产品的升级代码,因为我必须创建新的升级路径(每个先前版本一个),这很混乱。

我之前尝试过(增加版本号,但不更改产品代码或升级代码),但每次我这样做时,当我运行安装程序以“升级”产品时,它会显示“恢复向导[ProductName]",有时某些文件不会被新安装程序中的新文件替换。

我没有增加版本号的“修订”号。我知道这被忽略了。通常,我会尝试类似2.0.3 => 2.0.4.

如何设置 InstallShield 以便它自动删除任何以前的版本,安装最新版本,如果用户已经安装了以前的版本,则将其作为“升级”或“更新”呈现给用户?如果没有,它应该像正常一样安装(“安装”,而不是“更新”)。

我使用的是 InstallShield 2013 Pro(版本 20 SP1),并且我坚持使用 Visual Studio 2010 中的 InstallShield 编辑器。

4

2 回答 2

6

您需要的是一次重大升级。这实质上是在您创建 MSI 的升级表、设置新的 ProductVersion 并更改包和产品代码之后,由 Windows Installer Engine 本身作为一项操作自动卸载现有版本并重新安装新版本。这是 Windows Installer 中最不容易出错的更新机制。要在 Installshield 中实施重大升级,请转到升级视图并添加升级项目。然后按照 GUI 向导或页面设置升级选项。我会看看我现在是否可以为您找到更好的链接,但这应该可以让您继续前进。

要真正了解 Windows Installer 升级,您应该阅读本书章节。或者这个 Microsoft MSDN 页面

只是为了完整性:小升级- 升级现有安装而不卸载它,通常在一开始就更难以正确。有许多技术限制适用。以下是对小升级所需的工作(以及其他详细信息)的一个很好的总结:http: //www.installsite.org/pages/en/msi/updates.htm

于 2014-04-30T18:59:49.207 回答
0

在这种情况下,您可以使用COM 自动化来使用 Javascript 或 VBScript 自动化发布过程。如果您之前有自动化其他产品(例如 Word 或 Excel),这是一个熟悉的过程。以下是一些可以开始的资源:

我曾经使用这种 VB 脚本和一个名为FinalBuilder的构建工具制作了一个构建过程,它负责其余的构建过程。我猜 FinalBuilder 可能对 Installshield 有一个动作,所以你可以完全绕过脚本。我不确定。只是想链接到 GUI,以便您可以看到该工具的外观。进一步截图

于 2014-04-30T19:10:05.183 回答