WiX:更新“添加/删除程序”中显示的版本号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WiX:更新“添加/删除程序”中显示的版本号相关的知识,希望对你有一定的参考价值。

我使用WyUpdate自动提供程序更新,以便我的客户始终运行最新版本。但是,此方法的一个问题是在更新期间不会调用MSI安装程序(使用WiX 3.5创建),因此添加/删除程序中的版本号不会增加。

我的问题是,是否有一些安全的方法以编程方式突破显示的版本?(WyUpdate能够在更新期间执行自定义代码并更改注册表值)。

答案

只需将“DisplayVersion”值更改为最新版本即可。

HKLMSOFTWAREMicrosoftWindowsCurrentVersionUninstallYourAppName

另外,为了节省时间,在wyBuild中你可以使用use the %version% variable,你创建的每个新版本都将使用正确的版本(而不是每次发布新版本时都必须输入它)。

关于严说什么......

但我认为这不是一个好主意。修改您不欠的注册表项,并将自己的逻辑注入Windows Installer可能会导致意外后果。我个人永远不会这样做。迟早会发射......

这是完全错误的。编辑注册表值不会更改安装程序逻辑。它根本不危险。最终用户仍然可以修复原始安装(将注册表和所有文件还原为原始版本),并且可以运行卸载程序,它将删除注册表和文件(尽管它们已被更改)。

如果不希望“msi修复”恢复到原始安装(而不是应用程序的更新版本),那么您需要向用户和execute it as part of your update提供* .msp或* .msi。

简短的回答:编辑注册表既不邪恶也不安全,只要你明白什么是什么。

另一答案

从技术上讲,您可以在系统注册表中找到读取版本的密钥(通常在SOFTWARE / Microsoft / Windows / CurrentVersion / Uninstall下),并强制您的更新软件每次使用正确的版本修改此值。

但我认为这不是一个好主意。修改您不欠的注册表项,并将自己的逻辑注入Windows Installer可能会导致意外后果。我个人永远不会这样做。迟早会发射......

顺便说一句,如果您不依赖Windows Installer更新,为什么更新ARP版本更重要?例如,在您的应用程序中有一个众所周知的位置,用户可以在其中查找当前版本。

以上是关于WiX:更新“添加/删除程序”中显示的版本号的主要内容,如果未能解决你的问题,请参考以下文章

确定先前软件包版本的 WiX 错误

安装后,C#应用程序(使用WIX创建的安装程序)不会运行

Wix Managed Bootstrapper:安装 Net 框架并在添加删除程序中添加条目,即使我们取消产品安装

从添加/删除程序中删除错误安装

在卸载期间显示来自 C# 自定义操作的 WiX 对话框

使用 WIX 自动增加内部版本号