问题描述
我已成功将 Delphi 应用程序打包到 MSIX 容器中,但我遇到了应用程序要求之一的问题:从应用商店更新应用程序后,其后台进程(控制台 exe
)被关闭(当然)并替换为在 AppxManifest.xml
中指定的新副本,以便在主应用程序首次打开时运行:
<Extensions>
<desktop:Extension Category="windows.startupTask" Executable="CwHelper.exe" EntryPoint="Windows.FullTrustApplication">
<desktop:StartupTask TaskId="CwHelper" Enabled="true" displayName="Capture Manager" />
</desktop:Extension>
</Extensions>
这一切正常,但这意味着后台 exe
在更新后打开主应用程序之前不会运行。这是非常不受欢迎的。
我对 MSFT 文档的 Internet 探索使我认为我应该能够通过在上面的 <Extensions>...</Extensions>
块中插入第二个 Extension
来自动重新启动后台应用程序,如下所示:
<Extension Category="windows.updateTask" Executable="<some>.exe" EntryPoint="<some entrypoint>" >
</Extension>
到目前为止,我还没有发现什么应该是我的(Delphi 创建的)<some>.exe
和它的 EntryPoint
。事实上,我还没有找到任何关于 Extension Category
的具体使用的例子。桌面桥应用程序实际上可以以这种方式使用它吗?如果是这样,谁能给我指点一下我应该在那些空白处填什么?
补充说明:我尝试在 exe
定义字段中重复 Windows.FullTrustApplication
的名称和 updateTask
并且实际上通过了认证,但是当商店尝试安装它。
补充说明:@StefanWick 善意地指出,他使用 MSFT 的工具集发布了一个我需要的示例 here。不幸的是,我不清楚如何将他的 C# 和 Visual Studio 标签转换为 Delphi 应用程序。对此的任何建议将不胜感激。
解决方法
经过大约一个月的研究,我回答了我自己的问题,我发现现在的答案是“否”,因为根据 Embarcadero 客户支持的说法,必要的 IBackgroundTasks
接口(尚未?)可用于 Delphi。
但好消息是这可能不是必需的,因为在 Microsoft Store 更新后重新启动应用程序的“正确”方法在 MSFT 文档 here 中有所描述。