2

因此,我们完成了一些到 .net 核心的 wpf 转换,现在我们需要将一个作为安装程序发送给外部客户端。以前我们使用 ClickOnce,但在 .net 核心中已弃用,不会根据 MS 移植,他们推荐 MSIX。但是,正如我们从文档中了解到的那样,即使我们将旁加载 WPF 应用程序,它仍将在具有虚拟化文件系统的沙箱中运行。这对我们来说是不行的,它显然是在设计时考虑了 UWP+Marketplace 交付。我们需要文件系统上的应用程序具有对文件系统的完全访问权限,即“旧方法”。

我们可以将它们作为 zip 文件发送并让客户解包,但管理层认为这不太专业,因此我们需要一个类似于 msi/clickonce 的交付包。有没有人在 MSIX 之外的核心上交付应用程序?

4

3 回答 3

2

编辑:微软宣布他们将在 .NET 5 中包含 ClickOnce 支持

您可以通过旁加载 msix 包在组织内部部署 .NET Core 和 .NET 5 应用程序。

多年来,我一直成功地使用 Clickonce 部署 .NET 业务线应用程序。

现在我正在将我的应用程序更新到 .NET Core,我想要类似于 Clickonce 的东西。换句话说:在网络共享中发布您的安装程序,并将您的自动更新应用程序部署到您的客户端,只需简单地处理安装程序的快捷方式即可。

您可以使用 msix 包实现此目的。问题是您仅限于 Windows 10 版本 1709 及更高版本

该解决方案于 12 月 19 日与MSIX Core 1.1一起出现。使用 msix 核心支持打包您的应用程序,您可以针对 Windows 7 SP1 及更高版本,这是我需要的,因为在工作中我们正在慢慢地从 Windows 7 过渡到 Windows 10,我仍然必须支持旧版本的 Windows。

使用 msix 核心打包 .net 核心应用程序的步骤是:

  1. 在您的解决方案中创建一个 Windows 应用程序打包项目。

  2. 右键单击 Windows 应用程序打包项目的 Applications 子文件夹,然后选择 Add Reference。然后选择您的目标项目。

  3. 更改您的 Package.manifest(参考:msix-packaging/MsixCore at master·microsoft/msix-packaging·GitHub)右键单击您的 Package.manifest 文件并选择查看代码更改为:

      <Dependencies>
        <TargetDeviceFamily Name="MSIXCore.Desktop" MinVersion="6.1.7601.0" MaxVersionTested="10.0.10240.0" />
        <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.16299.0" MaxVersionTested="10.0.18362.0" />
      </Dependencies>
    

    有了这个,您将您的最小版本稳定到 MSIXCore.Desktop,换句话说,Windows 7 sp1。

  4. 右键单击您的 Windows 应用程序打包项目并选择发布,然后选择创建应用程序包。

  5. 选择旁加载,然后选中启用自动更新。

    选择

  6. 为了在客户端机器上安装软件包,您必须对其进行签名。我建议您创建一个自签名证书。您必须在客户端计算机中安装证书,以便软件包受信任并且您可以安装它。如果您在域中,则可以使用组策略部署自签名证书。最佳情况是使用由受信任的根证书颁发机构提供的受信任证书对包进行签名。我个人的选择是在我自己的 Windows 证书颁发机构(在我的本地域中受信任)中创建一个证书。如果您决定使用受信任的证书签署您的包,这是命令行:


  .\SignTool.exe sign /fd SHA256 /a /f yourcert.pfx /p yourpassword *.appx

  1. 选择从不生成应用程序包。

image-20200521005823248

  1. 选择您的网络共享以发布包

图像-20200521003324900

为了在 Windows 7 sp1 机器上执行包安装程序,您必须事先相应地安装 msixmgrSetup-1.1.0.0-x64.msi 或 msixmgrSetup-1.1.0.0-x86.msi。你可以在这里找到安装程序

Windows 10 机器将立即识别安装程序。

如果您想了解有关 msix 包的更多信息,请在此处有一个很好的解释

我希望本指南可以帮助您使部署系统正常工作。

于 2020-05-20T23:19:06.330 回答
1

好吧,显然,我们再次面临来自 MS 的“我们的方式或高速公路”,所以我们只使用了 Inno Setup。在我们获得正确的安装过程或 MSIX 允许在没有不必要的文件系统抽象的情况下进行非沙盒设置之前,必须这样做。

于 2019-09-23T16:05:45.653 回答
1

还有其他工具,例如 Advanced Installer 或 InstallShield,可以现在和以后创建 MSI/EXE 安装程序,如果您决定使用 MSIX,您只需将新版本添加到当前项目。

该工具会自动将 MSI 的内容与 MSIX 同步,或者至少这是 Advanced Installer 为您所做的。

它们还具有 VS 扩展,因此您可以在 Visual Studio IDE 中构建安装程序。

于 2019-10-30T20:45:20.177 回答