组件之间的自定义操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组件之间的自定义操作相关的知识,希望对你有一定的参考价值。
如何确保在安装两个组件之间触发自定义操作?
例如,我有一些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
之间运行?
我期待这样的东西,但显然我只能使用标准或自定义操作的名称为Before和After属性,此解决方案不适用于组件。
<Custom Action="RunDatabaseMigration" After="DatabaseSetup"></Custom>
如何确保在安装两个组件之间触发自定义操作?
通常,无法在两个组件之间安排自定义操作。正如您自己已经发现的那样,Before
和After
属性必须命名为标准或自定义动作。
Windows安装程序不会一个接一个地安装一个组件。组件只是安装项的逻辑组,例如。 G。注册表项,文件等,但它们不定义安装顺序。相反,Windows安装程序将不同类型的资源(如注册表项和文件)分组,并按InstallExecuteSequence
表定义的顺序安装这些组。例如,在某一点上将安装所有文件(InstallFiles
动作),稍后将写入所有注册表键(WriteRegistryValues
)。看看suggested InstallExecuteSequence
以获得更好的主意。
话虽这么说,如果DatabaseSetup
只安装一种资源(比如说文件)而DatabaseCleanup
安装了另一种资源(比如注册表项),你可以在两个相关的标准动作之间安排一个自定义动作(在这种情况下是InstallFiles
和WriteRegistryValues
)。但是,如果两个组件都安装相同类型的资源或混合资源,则无法使用该解决方法。在这种情况下,您必须将其中一个组件转换为您可以随时安排的自定义操作。
以上是关于组件之间的自定义操作的主要内容,如果未能解决你的问题,请参考以下文章