首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >组件之间的自定义操作

组件之间的自定义操作
EN

Stack Overflow用户
提问于 2018-09-04 13:59:03
回答 1查看 301关注 0票数 2

如何确保在安装两个组件之间触发自定义操作?

例如,我有一些Wix定义如下:

代码语言:javascript
运行
复制
<Feature Id="ProductFeature" Title="My Installer" Level="1">
  <ComponentGroupRef Id="DatabaseSetup" />
  <ComponentGroupRef Id="DatabaseCleanup" />
</Feature>

<InstallExecuteSequence>
  <Custom Action="RunDatabaseMigration" Before="InstallFinalize"></Custom>
</InstallExecuteSequence>

是否有办法确保自定义操作RunDatabaseMigrationDatabaseSetupDatabaseCleanup之间运行?

我期待这样的东西,但很明显,我只能使用标准或自定义的名称的前和后属性,这个解决方案不适用于组件。

代码语言:javascript
运行
复制
<Custom Action="RunDatabaseMigration" After="DatabaseSetup"></Custom>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-04 20:11:00

如何确保在安装两个组件之间触发自定义操作?

通常,无法在两个组件之间安排自定义操作。正如您自己已经发现的那样,BeforeAfter属性必须指定一个标准或自定义操作。

Windows安装程序不会一个接一个地安装组件。组件只是安装项的逻辑组,例如注册表项、文件等等,但它们没有定义安装顺序。相反,Windows将不同类型的资源(如注册表项和文件)分组,并按照InstallExecuteSequence表定义的顺序安装这些组。例如,在某一时刻,所有文件都将被安装(InstallFiles操作),稍后所有注册表项将被写入(WriteRegistryValues)。看看InstallExecuteSequence,得到一个更好的想法。

尽管如此,如果DatabaseSetup只安装一种资源(比如文件),而DatabaseCleanup安装了另一种资源(例如注册表项),那么您可以在两个相关的标准操作之间安排一个自定义操作(在本例中是InstallFilesWriteRegistryValues)。但是,如果两个组件都安装了相同类型的资源或混合资源,则无法使用该解决方案。在这种情况下,您必须将其中一个组件转换为可以在任何时间点调度的自定义操作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52168045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档