问题标签 [msix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
908 浏览

wpf - 使用 MSIX 发布 WPF Core ...多个问题


编辑 #1 开始

要复制这个:

  1. 创建一个新的“vanilla”WPF 应用程序寻址 .Net Core 3.1
  2. 向解决方案添加一个Windows Application Packaging Project(按照在 Visual Studio 中为 MSIX 打包设置桌面应用程序中提到的步骤)
  3. 尝试“部署”到 UNC 路径...

编辑 #1 结束


我正在将 WPF .net 框架应用程序转换为 .net core 3.1。此应用程序是一个“内部”工具,我们一直使用 ClickOnce 将其部署在共享的 UNC 路径上。很简单....

我现在用 .Net Core 重写了它,需要部署它。发现“ClickOnce”不再可用,我知道我必须走“MSIX”路线。文档看起来应该很简单,但我想我遗漏了一些东西......

1 - 我不得不将我的开发人员设置从“侧边栏”更改为“开发人员模式” 2 - 它在我的机器上构建良好,但在 Azure DevOps 上失败 3 - 我如何实际部署它......?

让我们依次看一下。

1 - 侧栏 => 开发者模式问题

我将一个新的 Windows 应用程序打包项目添加到我的解决方案中,为目标版本和最低版本选择 Windows 版本 1909,并将我的 WPF 应用程序设置为入口点。我尝试运行它,它迫使我从“侧边栏”更改为“开发者模式”。

这是否只影响我作为开发人员......如果是这样,那很好。我怀疑最终的最终用户会想要这样做。

2 - Azure DevOps 构建管道失败

在本地,它编译得很好,即使在我将所有警告设置为错误并运行 FxCop 的发布模式下也是如此。将其推送到 Azure 并显示:

[错误]C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(234,5): Error NETSDK1047: Assets file 'd:\a\1 \s\MyApp\MyApp\obj\project.assets.json' 没有 '.NETCoreApp,Version=v3.1/win-x86' 的目标。
确保恢复已运行,并且您已在项目的 TargetFrameworks 中包含“netcoreapp3.1”。
您可能还需要在项目的 RuntimeIdentifiers 中包含“win-x86”。

好的

  • 我的 YAML 文件在成功构建之前有一个“还原 NuGet 包”步骤。
  • 我在我的 SKD 项目文件中查找我的应用程序,我看到了<TargetFramework>netcoreapp3.1</TargetFramework>
  • 关于“RuntimeIdentifiers”,我发现链接Additions to the csproj format for .NET Core所以<RuntimeIdentifiers>win-x64;win-x86</RuntimeIdentifiers>立即添加在下面<TargetFramework>netcoreapp3.1</TargetFramework>(我应该更具体地使用win10-x64;win10-x86吗?)

无论哪种方式,这都失败了,消息略有不同:

正在构建的项目“MSIL”的处理器架构与参考“我的 dll 的路径”、“x86”的处理器架构不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改项目的目标处理器体系结构,以便在项目和参考之间对齐处理器体系结构,或者依赖具有与项目的目标处理器体系结构匹配的处理器体系结构的参考。

3 - 我如何实际部署它?

来自MSIX:在 Windows 上部署桌面应用程序的现代方式它指出:

要生成实际的 MSIX 包,Project | 下提供了一个向导。商店 | 在 Visual Studio 中创建应用程序包。

我的机器上没有……我什至安装了 Visual Studio 工作负载“通用 Windows 平台开发”。我可以在“构建”菜单下看到“部署”……但就是这样……我将 UNC 路径放在哪里?

我想我错过了一些相当基本的东西......

我的 CSPROJ 的相关部分是

打包项目是:

(我可以/应该删除我认为不相关的对“DEBUG”和“ARM”的引用吗??)

清单是

谢谢!

0 投票
1 回答
146 浏览

c# - C#:从 MSIX 包启动引用的控制台应用程序

我正在创建一个启动其他三个应用程序的应用程序: _proc1 = Process.Start(path) 然后通过 Timer 对象检查以确保它们处于活动状态。

这行得通,只要我知道绝对路径。当应用程序与 MSIX 捆绑包一起安装时,我似乎不知道如何执行此操作。所有四个应用程序(启动应用程序和 3 个子应用程序)都捆绑在应用程序中。

我试图用谷歌搜索这个问题,但我似乎找不到答案。非常感谢您的时间和专业知识!

0 投票
1 回答
74 浏览

appxmanifest - 如何在 Windows 应用程序打包项目中设置 ForceUpdateFromAnyVersion?

我正在寻找通过在新的 Windows 应用程序打包项目中定义它来在 appinstaller 文件中设置属性ForceUpdateFromAnyVersion 。

但目前我不知道该怎么做。认为Package.appxmanifest文件中一定有元素,但是找不到。

0 投票
1 回答
172 浏览

c# - Msix,打包和任务调度器

我在 VS2019 pro preview 中使用 .NET 5.0 制作了一个控制台应用程序,将其与“Windows 应用程序打包项目”msix 打包在一起。一切顺利并正确安装,完美更新。当我想将此程序添加到任务计划程序时出现问题,因为 .exe 文件位于 C:\Program Files\WindowsApps\PackageName\Version...
1. 由于限制,无法从 WindowsApps 文件夹运行它(由于将有多个其他用户,因此让他们都获得访问权限是不可行的)。2. 如果我在给定版本 nr 的情况下推送更新,文件夹将更改名称。有没有办法正确地做到这一点?喜欢启动 Windows 应用程序文件的命令?任何帮助,将不胜感激!

0 投票
1 回答
266 浏览

uwp - 如何从用 C# 编写的 UWP 应用调用 C# 可选包中的代码

现在可以在 C# 中创建可选包。但是,尚不清楚如何从 C# UWP 主应用程序调用可选包中的代码,尤其是当我们需要以通用方式调用它时。

比如说,我在可选包中有一个插件,它们都实现IPlugin了带有Execute 方法和Name属性的接口。我想Name在菜单中显示所有插件的 s 并Execute在用户单击它时调用插件的方法。

我们可以遍历主应用程序的所有可选包,例如

如何调用这些可选包中存在的代码。

0 投票
1 回答
754 浏览

c# - 阅读 msix 包 appxmanifest 版本

我们有一个仅在内部使用的 .NET Core 应用程序。在从 WPF 切换到 .NET Core 期间,我们从 Click-Once 更改为 MSIX。在我们应用程序的窗口标题/标题中,我们还“输出”当前版本(主要、次要、...)。以前,我们采用了我们的启动项目的版本(称为“视图”)。现在使用MSIX,这个项目已经得到了我们需要的版本号(启动项目引用了“view”)。我们现在如何阅读正确的版本?

使用Assembly.GetEntryAssemblyAssembly.GetCallingAssembly返回错误的版本 - 启动项目的版本。该应用程序不在 Windows 应用商店中,它将作为包进行侧面加载。有什么想法可以在部署我们的包时获得我们“产生”的“正确”版本?

0 投票
1 回答
118 浏览

installshield - 如何签署可以在任何地方运行的 exe 或 msix 安装程序

我想签署一个 Exe (msi) 或 MSIX 安装文件以在所有系统上运行而没有任何问题(如智能屏幕)。我使用 InstallShield 和 Advanced Installer 来创建安装程序 这两个应用程序都可以通过 PFX 文件进行签名但是,用户必须在执行安装程序文件之前手动安装签名所以我怎样才能签署一个在所有系统上运行而没有任何问题的安装程序文件并且不需要用户安装签名?

0 投票
1 回答
682 浏览

c# - MSIX 未打包所有依赖项

我一直在考虑使用打包项目将我的 WPF .Net Core 3.1 应用程序打包到 MSIX 安装程序中。

但是,在手动调试或测试输出时,应用程序在启动时崩溃,因为它缺少我的应用程序所依赖的 Microsoft.EntityFrameworkCore.Design dll。我不太明白为什么会这样。

我不直接引用这个包,只是 Microsoft.EntityFrameworkCore.Sqlite 和 Microsoft.EntityFrameworkCore.Tools 包,但是当我尝试直接引用它时,行为不会改变。

我尝试按照本指南进行设置以供参考:https ://docs.microsoft.com/en-us/windows/apps/desktop/modernize/modernize-wpf-tutorial-5

我可以看到文件夹中没有 dll,我需要在本指南之上做些什么才能让我的应用程序运行吗?dll 在应用程序本身的构建目录中提供,而不是在包的构建目录中。

任何建议都会非常有帮助

0 投票
1 回答
1074 浏览

windows-store-apps - 我可以使用受信任的代码签名证书对 Windows 应用商店应用程序进行代码签名吗?

我们有一个 Windows UWP 应用程序,目前在 Microsoft 商店中。该项目包括一个商店关联文件,其中包含发布者属性,其中之一是通用名称。我们的商店帐户将 CN 显示为类似于 GUID 的字符串值。它将显示名称显示为我们的公司名称。在 Visual Studio 中,我们可以使用自签名证书构建应用程序以进行旁加载和代码签名,其中证书的 CN 与 Store CN 相同(GUID 类似字符串)。这使我们能够在商店版本上加载应用程序的新版本,以便快速为特定客户测试和获取新功能。然后,最终可以使用更新的已发布商店版本来更新侧载版本。

我的问题是:我们想使用从受信任的证书颁发机构购买的代码签名证书对应用程序进行签名。问题是受信任的代码签名证书必须将通用名称作为公司名称。我们似乎只能使用通用名称等于商店关联文件中的 CN 的证书(类似于字符串的 GUID)对应用程序进行签名。这是存储相关应用程序的已知限制还是我们遗漏了什么?

0 投票
1 回答
344 浏览

c# - 由于“AMD64”处理器不匹配,无法在 MSIX 中发布 WPF

我目前在使用 Windows 应用程序打包项目 (WAPP) 打包时遇到了更多问题。

我希望将我的 WPF 应用程序打包到与 32 位和 64 位系统兼容的应用程序包中。在我自己的应用程序中,我添加了 WAPP 并根据此Microsoft Docs 文章引用它,同时在项目属性中进行初始设置,并使用配置管理器为我的 WPF 项目进行 x64 和 x86 配置。

调试 WAPP 正常运行,没有问题。当我转向发布时,我将其设置为侧载,选择签名并选择捆绑发布 x64 和 x86 配置。在发布过程中,x86 构建首先运行没有问题,但是在执行 x64 部分时,我遇到了这个错误:

正在构建的项目的处理器架构“AMD64”与参考的处理器架构“C:\Users\UserFolder\Documents\InstallerDemoSourceCode\WPFDemoApp\bin\x86\Debug\netcoreapp3.1\win-x86”不匹配\WPFDemoApp.dll”、“x86”。这种不匹配可能会导致运行时失败。

我花了一段时间制作新的 Wpf 项目并使用 MSIX 下载其他 WPF 项目的示例,并尝试发布,但都以相同的错误结束,这似乎表明 VS 或我的 PC 存在问题。

我什至尝试使用此有用视频中未更改的项目,他能够完全按照我想要的方式构建它,但由于此错误而无法执行相同操作。


但是,我确实在 x64 构建输出中注意到该构建正在使用我的 x86 对象而不是 x64。您甚至可以在错误中看到它引用的 DLL 在 x86 文件夹中。这可能是一个错误吗?

任何线索都是无价的


更新#1: 响应@JonasH 的建议,尝试在 AnyCPU 模式下发布应用程序,但收到了一个替代错误:

正在构建的项目的处理器架构“MSIL”与参考的处理器架构“C:\Users\jacob\OneDrive\Documents\InstallerDemoSourceCode\WPFDemoApp\bin\x86\Debug\netcoreapp3.1\win”不匹配-x86\WPFDemoApp.dll”、“x86”。这种不匹配可能会导致运行时失败。