1

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

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

4

2 回答 2

4

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

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

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

于 2010-12-20T12:16:07.560 回答
0

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

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\YourAppName

此外,为了节省时间,在wyBuild中您可以使用 %version% 变量,并且您创建的每个新版本都将使用正确的版本(而不是每次发布新版本时都必须键入它)。

至于严说的……

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

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

如果不希望“msi 修复”恢复到原始安装(而不是应用程序的更新版本),那么您需要向用户提供 *.msp 或 *.msi 并将其作为一部分执行你的更新

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

于 2011-01-20T06:02:24.943 回答