WiX 工具集的刻录何时使用 C:\ProgramData\Package Cache\ 与 C:\Users\...\AppData\Local\Package Cache?
When does burn for WiX toolset use C:\ProgramData\Package Cache\ vs C:\Users\...\AppData\Local\Package Cache?
我现在遇到奇怪的错误。
我有一个运行良好的捆绑包项目(称为捆绑包 A),现在我正在处理从捆绑包 A 再次创建的捆绑包。(称为这个新捆绑包 B)
即使先决条件 exe 没有更改, 代码也没有更改,但在安装 bundle B 的先决条件时开始出现错误。
错误代码本身是0x800702e4,但我认为原因不是海拔问题。
我比较了二进制文件(使用 winmerge)并确认 exe 是相同的。
我在 bundle .log 中发现的主要区别是文件可用的路径。
在 bundle A 中,这个先决条件的路径位于 C:\ProgramData\Package Cache
但是,在 bundle B 中,此先决条件的路径位于 C:\Users\My.User.Name\AppData\Local\Package Cache
我记得以前使用 ProgramData 的大部分时间。
怎么会这样?
WiX 何时确定使用不同的包位置?
捆绑代码中是否有我可以修改以保证使用 ProgramData 的标志?
编辑
只是为了尝试,假设是海拔问题,我添加了 然后这个问题就消失了。
现在问题变成了为什么这对 bundle A 有效?
听起来你有 a package installed per user (Installation Context
and properties: 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. It does not have the above assignment information, but that is easy to add. Let me just add it. New version here.
更新:并且 here is the latest version 截至 16.April.2021。自动突出显示 table 单元格内容并将范围整数转换为“机器”或“用户”安装。
我现在遇到奇怪的错误。
我有一个运行良好的捆绑包项目(称为捆绑包 A),现在我正在处理从捆绑包 A 再次创建的捆绑包。(称为这个新捆绑包 B)
即使先决条件 exe 没有更改,
错误代码本身是0x800702e4,但我认为原因不是海拔问题。 我比较了二进制文件(使用 winmerge)并确认 exe 是相同的。
我在 bundle .log 中发现的主要区别是文件可用的路径。
在 bundle A 中,这个先决条件的路径位于 C:\ProgramData\Package Cache
但是,在 bundle B 中,此先决条件的路径位于 C:\Users\My.User.Name\AppData\Local\Package Cache
我记得以前使用 ProgramData 的大部分时间。 怎么会这样? WiX 何时确定使用不同的包位置? 捆绑代码中是否有我可以修改以保证使用 ProgramData 的标志?
编辑
只是为了尝试,假设是海拔问题,我添加了
听起来你有 a package installed per user (Installation Context
and properties: 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. It does not have the above assignment information, but that is easy to add. Let me just add it. New version here.
更新:并且 here is the latest version 截至 16.April.2021。自动突出显示 table 单元格内容并将范围整数转换为“机器”或“用户”安装。