在主 Bundle 之前安排 RelatedBundle 操作

Posted

技术标签:

【中文标题】在主 Bundle 之前安排 RelatedBundle 操作【英文标题】:Schedule RelatedBundle Action before primary Bundle 【发布时间】:2014-02-06 19:39:37 【问题描述】:

我有一个应用程序需要在安装之前卸载相关的捆绑包。我可以正确地检测到它,并在 OnPlanRelatedBundle() 中将它的状态设置为 Absent,但直到安装了我的新包后它才会被删除。有没有办法将相关的捆绑操作设置为在主捆绑之前发生?

    <RelatedBundle Action="Detect" Id="the-other-id" />

在后面的代码中,我有以下检测到的相关捆绑包

private void OnDetectedRelatedBundle(object sender, DetectRelatedBundleEventArgs e) 
 
    if (e.Operation == RelatedOperation.None && e.RelationType == RelationType.Detect) 
     
        // If the other app is installed, we want to save the product code,
        // so we can uninstall it like we were upgrading it 
        m_relatedBundleId = e.ProductCode; 
     
 

对于规划相关的捆绑包

private void OnPlanRelatedBundle(object sender, PlanRelatedBundleEventArgs args) 
 
    // If we've detected the related app, we want to schedule it to be uninstalled (State = Absent) 
    if (args.BundleId == m_relatedBundleId) 
     
        args.State = RequestState.Absent; 
     

【问题讨论】:

【参考方案1】:

今天,当前捆绑包操作之后的所有相关捆绑包操作。如果您有令人信服的用例来提供其他计划,请在 http://wixtoolset.org/issues/ 提出功能请求。

【讨论】:

以上是关于在主 Bundle 之前安排 RelatedBundle 操作的主要内容,如果未能解决你的问题,请参考以下文章

从bundle中加载xib

我在主包中找不到我的 AppIcon

在主事件循环之前如何创建一些对象?

在主线程开始运行之前捕获新的进程事件

在主对象选择之前隐藏底部标签栏

Android 完美解决bundle实现页面跳转并保留之前数据+传值