我将 WPF 应用程序打包为 MSIX,但同样的代码也可以打包为 ClickOnce 或在没有任何包的情况下作为可移植的工作。在运行时检测使用哪种包装技术(如果有)的最佳方法是什么?
编辑:我将尝试澄清一些事情,因为问题正在被否决而没有任何评论。现有应用程序打包为ClickOnce。我们正在尝试将其移至MSIX,该接缝可以正常工作,但不会立即迁移整个用户群,我们也需要与旧打包格式兼容,因为“现代”打包方式引入了很多限制,应该区别对待。
是的,您可以使用它Windows.ApplicationModel.Package.Current
来查看您是否作为打包应用程序运行。假设您使用的是 C#(但您也可以使用 C++ 等):
internal static bool IsPackaged()
{
try
{
// If we have a package ID then we are running in a packaged context
var dummy = Windows.ApplicationModel.Package.Current.Id;
return true;
}
catch
{
return false;
}
}
(来自此桌面桥示例)。