如何确保在安装两个组件之间触发自定义操作?
例如,我有一些Wix定义如下:
<Feature Id="ProductFeature" Title="My Installer" Level="1">
<ComponentGroupRef Id="DatabaseSetup" />
<ComponentGroupRef Id="DatabaseCleanup" />
</Feature>
<InstallExecuteSequence>
<Custom Action="RunDatabaseMigration" Before="InstallFinalize"></Custom>
</InstallExecuteSequence>是否有办法确保自定义操作RunDatabaseMigration在DatabaseSetup和DatabaseCleanup之间运行?
我期待这样的东西,但很明显,我只能使用标准或自定义的名称的前和后属性,这个解决方案不适用于组件。
<Custom Action="RunDatabaseMigration" After="DatabaseSetup"></Custom>发布于 2018-09-04 20:11:00
如何确保在安装两个组件之间触发自定义操作?
通常,无法在两个组件之间安排自定义操作。正如您自己已经发现的那样,Before和After属性必须指定一个标准或自定义操作。
Windows安装程序不会一个接一个地安装组件。组件只是安装项的逻辑组,例如注册表项、文件等等,但它们没有定义安装顺序。相反,Windows将不同类型的资源(如注册表项和文件)分组,并按照InstallExecuteSequence表定义的顺序安装这些组。例如,在某一时刻,所有文件都将被安装(InstallFiles操作),稍后所有注册表项将被写入(WriteRegistryValues)。看看InstallExecuteSequence,得到一个更好的想法。
尽管如此,如果DatabaseSetup只安装一种资源(比如文件),而DatabaseCleanup安装了另一种资源(例如注册表项),那么您可以在两个相关的标准操作之间安排一个自定义操作(在本例中是InstallFiles和WriteRegistryValues)。但是,如果两个组件都安装了相同类型的资源或混合资源,则无法使用该解决方案。在这种情况下,您必须将其中一个组件转换为可以在任何时间点调度的自定义操作。
https://stackoverflow.com/questions/52168045
复制相似问题