如何让 MSIX 应用安装程序在每次生成/发布期间输出正确的设置?

J W*_*ezy 6 wpf azure visual-studio msix .net-5

问题:

如何让 MSIXappinstaller在每次生成/发布期间输出正确的设置?

语境:

这是“为什么在启用侧面加载时 MSIX 不会在每次应用程序运行时自动检查更新?”的后续问题。

我在跑步:

  • Windows 10 20H2,操作系统内部版本 19042.928
  • Visual Studio 2019 社区版,版本 16.9.4

MSIX Windows 目标设置如下:

  • 目标版本 = Windows 10 版本 2004
  • 最低版本 = Windows 10 版本 1809

MSIX 安装程序项目会创建无效appinstaller文件,这会阻止应用程序在每次运行时自动检查更新。我可以在每次构建/发布后手动更改文件,但我认为我不应该这样做,因为这似乎既弄巧成拙又错误。

一般来说,我几乎会忽略appinstaller每次创建,但文件会自动递增版本号。因此,我目前似乎陷入了某种形式的手动干预,要么更改 和schema version部分UpdateSettings,要么更新路径中的版本。这可能与运行 Visual Studio Community 版本有关吗?我需要专业人士才能让它发挥作用吗?

Visual Studio 创建的 Appinstaller,这是错误的:

<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    Uri="https://<AppService>.azurewebsites.net/<AppName>.Setup.appinstaller"
    Version="<AppVersion>" xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2">
    <MainBundle
        Name="<SomeGuid>"
        Version="<AppVersion>"
        Publisher="CN=<CertificateName>"
        Uri="https://<AppService>.azurewebsites.net/<AppName>.Setup_<AppVersion>_Development_Test/<AppName>.Setup_<AppVersion>_x64_Development.msixbundle" />
    <UpdateSettings>
        <OnLaunch
            HoursBetweenUpdateChecks="0" />
    </UpdateSettings>
</AppInstaller>
Run Code Online (Sandbox Code Playgroud)

我需要 Visual Studio 创建的应用程序安装程序:

<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    Uri="https://<AppService>.azurewebsites.net/<AppName>.Setup.appinstaller"
    Version="<AppVersion>" xmlns="http://schemas.microsoft.com/appx/appinstaller/2018">
    <MainBundle
        Name="<SomeGuid>"
        Version="<AppVersion>"
        Publisher="<CertificateName>"
        Uri="https://<AppService>.azurewebsites.net/<AppName>.Setup_<AppVersion>_Development_Test/<AppName>.Setup_<AppVersion>_x64_Development.msixbundle" />
    <UpdateSettings>
        <OnLaunch
            HoursBetweenUpdateChecks="0"
            ShowPrompt="true"
            UpdateBlocksActivation="true" />
        <AutomaticBackgroundTask />
        <ForceUpdateFromAnyVersion>true</ForceUpdateFromAnyVersion>
    </UpdateSettings>
</AppInstaller>
Run Code Online (Sandbox Code Playgroud)

J W*_*ezy 9

我们解决了即使启用了侧面加载,应用程序也不检查自动更新的问题。我们需要向应用程序安装程序类型的 MSIX 项目添加一个附加项。这将创建默认文件名 Package.appinstaller*。此文件提供 appinstaller 文件的配置设置,需要这些设置才能控制所有可用设置,包括 UpdateSettings 部分。

\n

应用程序安装程序允许的一些附加功能是阻止用户在不更新的情况下运行应用程序。这是 ClickOnce 发布配置文件的一个问题,因为它为用户提供了跳过更新的选项;我们无法找到防止这种情况发生的方法。不过,MSIX 应用安装程序允许控制此行为。

\n

*\xe2\x80\x8b 不要重命名此文件,因为构建/发布实用程序不会选择它并将设置应用到 APPINSTALLER 文件。这似乎是一个错误/静态文件引用。

\n

Package.appinstaller

\n
<?xml version="1.0" encoding="utf-8"?>\n<AppInstaller Uri="{AppInstallerUri}"\n              Version="{Version}"\n              xmlns="http://schemas.microsoft.com/appx/appinstaller/2018">\n\n  <MainBundle Name="{Name}"\n              Version="{Version}"\n              Publisher="{Publisher}"\n              Uri="{MainPackageUri}"/>\n\n  <UpdateSettings>\n    <OnLaunch\n        HoursBetweenUpdateChecks="0"\n        ShowPrompt="true"\n        UpdateBlocksActivation="true" />\n    <AutomaticBackgroundTask />\n    <ForceUpdateFromAnyVersion>true</ForceUpdateFromAnyVersion>\n  </UpdateSettings>\n\n</AppInstaller>\n
Run Code Online (Sandbox Code Playgroud)\n

参考:

\n\n

附加参考资料:

\n\n