为 .net core 3 wpf/winforms(不是 MSIX)安装?

Installer for .net core 3 wpf/winforms (non MSIX)?

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

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

好吧,很明显,我们再次面临来自 MS 的 "our way or the highway",所以我们只使用了 Inno Setup。直到我们获得正确的安装过程或 MSIX 允许在没有不必要的文件系统抽象的情况下进行非沙盒安装之前,这将是必须的。

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

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

他们还有一个 VS 扩展,因此您可以在 Visual Studio IDE.

中构建安装程序

编辑:Microsoft 已宣布他们将在 .NET 5 中包含对 ClickOnce 的支持

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

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

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

您可以使用 msix 包实现此目的。问题是你限Windows10版本1709,以后

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

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

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

  2. 右键单击 Windows 应用程序打包项目的 Applications 子文件夹,然后 select 添加引用。然后select你的目标项目。

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

      <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 应用程序打包项目并 select 发布然后创建应用程序包。

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

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


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

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

  1. Select 用于发布程序包的网络共享

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

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

如果你想了解更多关于 msix 包的信息,你有一个很好的解释 here

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