我正在将当前使用 ClickOnce 部署的 C#/WPF 应用程序转换为 MSIX。我想检查代码,当前执行是否来自 MSIX 包内,或者是否仅执行 .exe,类似于 ClickOnce 的
ApplicationDeployment.IsNetWorkDeployed
属性。
作为目前的解决方法,我使用 try catch 块尝试访问 Package.Current.Displayname 并在 catch 块中设置 isMsix 属性,但我想知道是否有更好的方法使用某些方法或属性?
检测包身份和运行时上下文
https://learn.microsoft.com/en-us/windows/msix/detect-package-identity
使用
IsRunningAsUwp()
中的 DesktopBridge.Helpers
。
来自 MAUI 存储库
public static class AppInfoUtils
{
static readonly Lazy<bool> _isPackagedAppLazy = new Lazy<bool>(() =>
{
try
{
if (Package.Current != null)
return true;
}
catch
{
// no-op
}
return false;
});
public static bool IsPackagedApp => _isPackagedAppLazy.Value;
}