如何通过 Wix Bootstrapper 在修改模式下添加包?
How to add package in Modify mode via Wix Boostrapper?
我有包含多个软件包和自定义 BA 的 Wix 捆绑包。所有包都有 InstallCondition 属性。所有软件包都单独安装成功。但是如果我安装了一些包,然后尝试在修改模式下添加其他包,它们就没有安装。
InstallCondition 的计算结果为真,并且 Cache="always"。日志是这样的(安装了Package1,我要添加Package2):
Detected package: Package1.msi, state: Present, cached: Complete
Detected package: Package2.msi, state: Absent, cached: Complete
...
Setting string variable 'Package1' to value 'true'
Setting string variable 'Package2' to value 'true'
...
Condition 'Package1 = "true"' evaluates to true.
Condition 'Package2 = "true"' evaluates to true.
...
Planned package: Package1.msi, state: Present, default requested:
Present, ba requested: Present, execute: None, rollback: None, cache:
No, uncache: No, dependency: Register
Planned package: Package2.msi, state: Absent, default requested:
Absent, ba requested: Absent, execute: None, rollback: None, cache:
No, uncache: No, dependency: None
在修改模式下删除部分包也成功运行。
终于解决了将 LaunchAction = "Modify" 更改为 LaunchAction = "Install" 的问题。这很好用,但我仍然不明白如何使用 LaunchAction = "Modify",为什么我可以删除包,但不能添加。
在 LaunchAction = "Modify" 期间,引擎默认不安装包。您可以通过日志的 default requested: Absent
部分看到这一点。如果自定义 BA 想要在 Modify
期间安装包,则需要在 Plan 期间更改请求的状态(使用 OnPlanPackageBegin
方法的 pRequestedState
参数)。请注意,更改默认状态可能会导致不需要的情况,例如在卸载捆绑包时安装包,因此请彻底测试。
我有包含多个软件包和自定义 BA 的 Wix 捆绑包。所有包都有 InstallCondition 属性。所有软件包都单独安装成功。但是如果我安装了一些包,然后尝试在修改模式下添加其他包,它们就没有安装。 InstallCondition 的计算结果为真,并且 Cache="always"。日志是这样的(安装了Package1,我要添加Package2):
Detected package: Package1.msi, state: Present, cached: Complete
Detected package: Package2.msi, state: Absent, cached: Complete
...
Setting string variable 'Package1' to value 'true'
Setting string variable 'Package2' to value 'true'
...
Condition 'Package1 = "true"' evaluates to true.
Condition 'Package2 = "true"' evaluates to true.
...
Planned package: Package1.msi, state: Present, default requested: Present, ba requested: Present, execute: None, rollback: None, cache: No, uncache: No, dependency: Register
Planned package: Package2.msi, state: Absent, default requested: Absent, ba requested: Absent, execute: None, rollback: None, cache: No, uncache: No, dependency: None
在修改模式下删除部分包也成功运行。
终于解决了将 LaunchAction = "Modify" 更改为 LaunchAction = "Install" 的问题。这很好用,但我仍然不明白如何使用 LaunchAction = "Modify",为什么我可以删除包,但不能添加。
在 LaunchAction = "Modify" 期间,引擎默认不安装包。您可以通过日志的 default requested: Absent
部分看到这一点。如果自定义 BA 想要在 Modify
期间安装包,则需要在 Plan 期间更改请求的状态(使用 OnPlanPackageBegin
方法的 pRequestedState
参数)。请注意,更改默认状态可能会导致不需要的情况,例如在卸载捆绑包时安装包,因此请彻底测试。