繁体   English   中英

如何找出已安装的产品-已安装较新的产品MSI窗口

[英]how to find out which products are installed - newer product are already installed MSI windows

我可以通过WIX创建MSI->我们在IIS上安装了它。 发生了什么-我们已经在1.8上安装了某个版本的应用程序,然后仅出于测试目的安装了99.0的版本,然后卸载了该99版本。 然后,我尝试安装其他版本并获得:已安装该产品的更新版本。

然后,我尝试按照更改产品的升级代码进行操作-再次制作高版本,然后卸载并安装较低版本-并且工作正常。

所以我觉得我缺少一些东西-其他信息是,在程序和功能列表中,卸载后我找不到更高的应用程序-那么我的问题是安装程序如何评估是否有较新版本? 有关安装(以及用于比较)内容的信息以及如何有效,轻松地访问它们的信息到底存储在哪里? 这样我就可以直视它?

ProductCode标识特定产品。 每次运送新的替换产品时,它都会更改。 UpgradeCode通过在版本预计将不断提高的更新产品中使用相同的UpgradeCode来定义一系列产品。 默认情况下,新产品版本将主要升级替换旧产品版本。 因为upgradecode定义了一个产品系列,所以Windows将寻找具有相同UpgradeCode的产品,因为相同的UpgradeCodes意味着相互排斥的产品,用它们将旧产品替换为新产品。 在WiX中,主要升级是使用您可能正在使用的majorupgrade元素完成的,因为您收到“已安装较新版本”消息。 如果要“升级”到较低版本,则有一个AllowDowngrade选项。

产品版本(例如文件版本)不仅是有用的信息-系统使用它们时还应理解,新版本会替代旧版本,通常回溯到较低版本是一件坏事,这就是默认行为不允许降级的原因。

该脚本可能会有所帮助。 它使用Windows Installer脚本API枚举所有已安装的产品,显示版本,用户sid,ProductCode等:

 Option Explicit Public installer, fullmsg, comp, prod, a, fso, pname, ploc, pid,contxt, sid, psorce, pcache, pvers Set fso = CreateObject("Scripting.FileSystemObject") Set a = fso.CreateTextFile("prodex.txt", True) ' Connect to Windows Installer object Set installer = CreateObject("WindowsInstaller.Installer") a.writeline ("Products") 'on error resume next For Each prod In installer.ProductsEx("", "", 7) pid = prod.ProductCode contxt = prod.Context sid=prod.usersid pname = prod.InstallProperty("ProductName") psorce = prod.InstallProperty("InstallSource") ploc =prod.InstallProperty("InstallLocation") pcache = prod.InstallProperty("LocalPackage") pvers=prod.InstallProperty("VersionString") a.writeline (pid & " " & pname & " " & pvers & " installed at <" & ploc & "> from " & psorce & " Context " & contxt & " Local " & pcache) Next 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM