如何解决WiX 工具集的刻录何时使用 C:\ProgramData\Package Cache\ vs C:\Users\...\AppData\Local\Package Cache?
我现在遇到奇怪的错误。
我有一个完美运行的包项目(称为包 A),现在我正在处理从包 A 再次创建的包。(调用这个新包 B)
即使先决条件 exe 没有改变,也没有改变
错误代码本身是 0x800702e4,但我认为原因不是海拔问题。 我比较了二进制文件(使用 winmerge)并确认 exe 是相同的。
我在 bundle .log 中发现的主要区别是文件可用的路径。
在bundle A中,这个先决条件的路径位于C:\ProgramData\Package Cache
但是,在包 B 中,此先决条件的路径位于 C:\Users\My.User.Name\AppData\Local\Package Cache
我记得以前使用过 ProgramData 的大部分时间。 这怎么会发生? WiX 什么时候决定使用不同的包位置? 我可以修改捆绑代码中的标志以保证 ProgramData 的使用吗?
编辑
只是为了尝试,假设是海拔问题,我添加了
解决方法
听起来您有 a package installed per user(Installation Context
和属性:MSIINSTALLPERUSER
、ALLUSERS
)。然后它可能会缓存在您指定的每个用户位置(用户配置文件)中。
这是对每个用户安装的软件包资产的快速扫描。只需保存到桌面并运行(例如 PackageScan.vbs
)。每个用户的每个安装(如果有)都会有一个消息框:
Dim installer : Set installer = CreateObject("WindowsInstaller.Installer")
'On Error Resume Next
Set products = installer.ProductsEx("","",7)
For Each product In products
'productcode = product.ProductCode
name = product.InstallProperty("ProductName")
'version = product.InstallProperty("VersionString")
assignment = product.InstallProperty("AssignmentType")
If (assignment = 0) Then
MsgBox "Found per user installation. The product name is: " & vbNewLine & vbNewLine & name
End If
Next
'On Error GoTo 0
Msgbox "Done."
Here is a script to create a HTML export of the package estate。它没有上述分配信息,但很容易添加。让我补充一下。 New version here。
更新:截至 2021 年 4 月 16 日,还有 here is the latest version。自动突出显示表格单元格内容并将范围整数转换为“机器”或“用户”安装。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。