gpt4 book ai didi

wix - 如何找出安装了哪些产品 - 较新的产品已安装 MSI windows

转载 作者:行者123 更新时间:2023-12-04 00:30:20 25 4
gpt4 key购买 nike

我可以通过 WIX 创建 MSI -> 我们将它安装在 IIS 上。发生了什么 - 我们已经安装了一些版本的应用程序,比如说 1.8,然后我们安装了版本,比如说 99.0,只是为了测试目的,然后我们卸载了这个 99 版本。然后我尝试安装其他版本并获得:已经安装了该产品的较新版本。

然后我尝试更改产品的升级代码 - 并再次制作高版本,然后卸载并安装较低版本 - 并且效果很好。

所以我觉得我错过了一些东西 - 附加信息是在程序和功能列表中我在卸载后找不到更高的应用程序 - 那么我的问题是安装程序如何评估有更新版本?有关已安装(和用于比较)内容的信息究竟存储在何处以及如何有效且轻松地访问它们?这样我就可以直视了吗?

最佳答案

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

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

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

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

关于wix - 如何找出安装了哪些产品 - 较新的产品已安装 MSI windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28963089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com