更新现有产品的产品名称

Update ProductName of existing Product

我使用 Inno Setup 创建了一个 exe 安装程序,并将其打包在 MSI 中使用 MSIWrapper.

为此,我在 iss (InnoSetup) 文件中插入了以下行:

[...]
#define MyAppName "New_product_name"
AppName={#MyAppName}
AppId={#MyAppName}
[...]

以及 MSIWrapper XML 配置文件中的以下行:

[...]
<ProductName Detect="" Value="Value" />
[...]

我想更改产品显示的名称卸载部分控制面板

如果我按如下方式更改 iss MyAppName:

[...]
#define MyAppName "New_product_name"
AppName={#MyAppName}
AppId={#MyAppName}
[...]

或配置XML如下:

[...]
<ProductName Detect="" Value="New_product_name" />
[...]

或两者,我执行更新 两个不同的程序,名为 Old_product_nameNew_product_name,在控制面板显示

我怎样才能达到我的目标?

非常感谢,

丹妮尔

AppId directive 值是程序列表中条目的键。

如果要更改应用程序的名称,请更改 AppName,但保留旧的 AppId

这与相反。

首选 MSI 工具:MSI 很复杂。在我看来,您应该使用 a proper MSI tool 或完全依赖旧版安装程序技术。这些包装纸似乎不可靠。请问这个软件是什么,怎么用? (影响有意义的事情)。

以下不是 MSIWrapper 的答案,而是 MSI 中的速成课程,目的是了解您所看到的内容,并在需要时可能选择更好的工具来创建 MSI(您可能会使用现有的工具).


ARP 条目:对于 MSI 包,添加/删除小程序中的两个条目通常意味着同一 MSI 的两个版本已被删除安装两次 - 没有升级功能(这将删除旧版本)。

MSI 主要升级:MSI 主要升级是卸载现有的 MSI 版本,然后安装新的 MSI 版本使用各种调度选项控制发生的顺序。控制它的机制主要在 MSI 文件中的 Upgrade table 中找到。 如果您希望 MSI 升级工作,必须编写此 table。正确完成后,旧版本会作为新 MSI 软件包安装的一部分消失。我不熟悉如何使用 MSIWrapper 完成此操作,但下面是一些示例,展示了升级 table 的工作原理。

一些花絮:

  • MSI 文件不是 zip 文件,而是 COM-structured 存储文件 - 基本上精简了 SQL 服务器数据库(more info). You can view them with
  • 有很多因素会导致主要升级失败, - 这将导致在添加/删除程序中出现两个条目(如您所述)。

如何使用各种工具创建重大升级:

WiX:

安装屏蔽:

高级安装程序:


链接:

  • MSI has a few important benefits and some quirks