【问题标题】:Update ProductName of existing Product更新现有产品的产品名称
【发布时间】:2020-10-16 21:03:23
【问题描述】:

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

为了做到这一点,我在 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显示 控制面板

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

非常感谢,

丹尼尔

【问题讨论】:

    标签: windows-installer inno-setup updates desktop-application uninstallstring


    【解决方案1】:

    首选 MSI 工具:MSI 很复杂。在我看来,您应该使用a proper MSI tool 或完全依赖传统的安装程序技术。这些包装器似乎不可靠。我们能问一下这个软件是什么以及如何使用它吗? (影响做什么有意义)。

    以下不是 MSIWrapper 的答案,而是 MSI 的速成课程,以便了解您所看到的内容,并可能在需要时选择更好的工具来创建 MSI(您可能对您所拥有的一切都满意)。


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

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

    一些花絮:


    如何使用各种工具进行重大升级:

    WiX

    Installshield

    高级安装程序


    链接

    【讨论】:

    • 感谢您的提示!现在我正在执行一些测试,以便正确理解如何从 exe 构建 MSI,并且我正在测试各种场景:在这种特殊情况下,问题是错误的版本号(我忘了更新它)。
    【解决方案2】:

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

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

    这与Automatically create new entry in "Programs and Features" for each new version相反。

    【讨论】:

    • 非常感谢。如果我遵循这种方法并使用 EXE 安装和更新软件,一切正常。否则,如果我使用使用 MSIWrapper 获得的 MSI 执行相同的操作,“程序和功能”下会显示两个不同的条目:如果可能,我该如何解决这个问题?
    • 对不起,我对 MSIWrapper 一无所知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 2011-11-11
    • 1970-01-01
    相关资源
    最近更新 更多