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

WiX:更新添加/删除程序中显示的版本号,wix,wix3.5,wyupdate,Wix,Wix3.5,Wyupdate,我使用自动交付程序更新,因此我的客户总是运行最新版本。但是,这种方法的一个问题是,在更新期间不会调用使用WiX 3.5创建的MSI安装程序,因此添加/删除程序中的版本号不会增加 我的问题是,是否有某种安全的方法可以通过编程方式改变显示的版本?WyUpdate能够在更新期间执行自定义代码并更改注册表值。从技术上讲,您可以在系统注册表中找到读取版本的键,在软件/Microsoft/Windows/CurrentVersion/Uninstall下,强制更新软件每次使用正确的版本修改此值 HKLM\S

我使用自动交付程序更新,因此我的客户总是运行最新版本。但是,这种方法的一个问题是,在更新期间不会调用使用WiX 3.5创建的MSI安装程序,因此添加/删除程序中的版本号不会增加


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

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

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


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

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

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


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

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

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\YourAppName
此外,为了节省时间,您可以在中使用正确的版本,并且您创建的每个新版本都将使用正确的版本,而无需在每次发布新版本时键入正确的版本

关于严说的话

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

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

如果不希望msi修复恢复到原始安装,而不是应用程序的更新版本,则您需要向您的用户和用户提供*.msp或*.msi


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

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

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\YourAppName
此外,为了节省时间,您可以在中使用正确的版本,并且您创建的每个新版本都将使用正确的版本,而无需在每次发布新版本时键入正确的版本

关于严说的话

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

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

如果不希望msi修复恢复到原始安装,而不是应用程序的更新版本,则您需要向您的用户和用户提供*.msp或*.msi


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

我明白你的观点,我也希望避免黑客攻击WiX/MSI。我问这个问题是为了弄清楚是否有支持的方法。至于为什么我需要在添加/删除程序中更新版本,因为我的程序是一项服务,这对我们的支持团队来说是最容易从客户那里获得版本信息的。啊,服务,我明白了。。。好吧,希望这里有人能为你提供更好、更安全的想法:我明白你的意思,我也希望避免黑客攻击WiX/MSI。我问这个问题是为了弄清楚是否有支持的方法。至于为什么我需要在“添加/删除程序”中更新版本,因为我的程序是一项服务,这将正常运行
让我们的支持团队最容易从客户那里获得版本信息。啊,服务,我明白了。。。嗯,希望这里有人能给你提供更好更安全的想法:更新Windows安装程序安装的资源文件、注册表项等,而不更新安装资源的MSI通常是一个非常糟糕的主意。如果MSI被修复,那么在安装程序之外所做的更改可能会丢失,这在更新时很少是预期的。严的评论可能更多的时候是正确的。如果你确切地知道你在做什么,并且你对将要介绍的副作用没有意见,那么你可以到处看看。然而,直接编辑已安装注册表是安全的笼统说法肯定是错误的……这很少是更新时的意图——这是真的。我已经澄清了我的回答。导致应用程序恢复到原始安装版本的修复在我的情况下不是问题,因为它将在稍后重新更新。尽管如此,我仍然对在更新期间执行MSI的能力感兴趣,并将尝试这样做,然后报告我的发现。在不更新安装资源的MSI的情况下更新Windows Installer安装的资源文件、注册表项等通常是一个非常糟糕的主意。如果MSI被修复,那么在安装程序之外所做的更改可能会丢失,这在更新时很少是预期的。严的评论可能更多的时候是正确的。如果你确切地知道你在做什么,并且你对将要介绍的副作用没有意见,那么你可以到处看看。然而,直接编辑已安装注册表是安全的笼统说法肯定是错误的……这很少是更新时的意图——这是真的。我已经澄清了我的回答。导致应用程序恢复到原始安装版本的修复在我的情况下不是问题,因为它将在稍后重新更新。尽管如此,我还是对在更新过程中执行MSI的能力很感兴趣,我会尝试一下,然后报告我的发现。