gpt4 book ai didi

wix - MSI 安装顺序 - 在服务启动前运行数据库脚本

转载 作者:行者123 更新时间:2023-12-04 14:23:03 26 4
gpt4 key购买 nike

各位,

我们在安装 MSI 时遇到了一些排序问题。作为我们应用程序的一部分,我们安装了一系列服务,并允许用户选择是立即启动还是稍后启动。

当它们立即开始时,它们似乎在安装序列中开始得太早了——在我们的数据库管理器有机会更新数据库之前。

现在,我们运行数据库更新程序的自定义操作看起来像这样 - 它在“InstallFinalize”之后运行 - 在过程的最后阶段。

   <InstallExecuteSequence>
<RemoveExistingProducts After='InstallInitialize' />
<Custom Action='RunDbUpdateManagerAction' After='InstallFinalize'>
DbUpdateManager=3</Custom>
</InstallExecuteSequence>

在任何安装的服务启动之后或之前运行哪个步骤更合适,以确保数据库脚本在任何已安装的服务启动之前执行?是否有“BeforeServiceStart”步骤?

编辑:

只是在标签上定义“Before='StartServices'”属性并没有解决我的问题。

我假设问题是这样的:自定义操作有一个“内部文本”,代表一个条件,这个条件是:“&DbUpdateManager=3”。根据我从反复试验中得出的结论,这可能意味着“必须发布 DbUpdateManager 功能”。

现在,问题是:“PublishFeature”出现在安装序列的末尾,就在“InstallFinalize”之前,而且肯定在 InstallServices/StartServices 之后。因此,当我指定“Before=StartServices”要求时,条件“必须发布 DbUpdateManager 功能”还不成立,因此 DbUpdateManager 不会被执行 :-(

我尝试删除条件 - 在这种情况下,我的 DbUpdateManager 有时根本不执行,有时不止一次 - 没有真正明确的模式来说明什么时候......

还有什么想法吗??有没有一种方法可以检查“已安装 DbUpdateManager 功能”的条件,该条件在“InstallFiles”步骤后为真??

马克

最佳答案

没有 BeforeServiceStart,但您可以尝试 Before='StartServices'

关于wix - MSI 安装顺序 - 在服务启动前运行数据库脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/683371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com