来源网站:WinUI3打包成.msix – WhiteNight's Site
2023年5月17日
服了,这玩意怎么能这么难搞。
又是证书又是什么“向开发者获取安装包”,还有什么缺依赖什么什么的鬼问题,真的就只能供本地开发的时候测试用呗。
我觉得这就是一种自信。
总结:我劝你别用。不如直接Unpacked运行然后发压缩包给别人来的方便。真的要用的话我大致试了下,你Unpackaged运行的时候也可以选择生成一个.msix的安装包,这玩意只需要客户安装证书就能运行了。
更正:我后来发现,WinUI3要运行需要一个.net 6.0 runtime的依赖,建议把这玩意的安装包一起发给你的用户,让用户自行安装。
好吧,证书其实挺好弄的,发布的时候用同一个证书就好了。记得让用户把证书保存到那个什么“受信任的根证书”目录下。
真正难搞的是各种dll的依赖,大部分安装你应用的人都不会特意去安装什么相关的依赖环境,除非对面和你一样之前在电脑上搞过WinUI3的开发,那倒是还比较有戏可以直接点开运行。
但是大部分人没有,所以以我的观点来看,建议不要选择Package运行,也不要去打包或者发布。
我现在个人目前觉得,选不打包的方式,然后去项目目录下找bin文件夹里带exe的那个文件夹,只要你点击exe能运行那就说明你找对文件夹了。
把这个文件夹打包发给用户即可,完事。省的为缺各种各样的依赖费心。
忘了说了,最重要的是这个问题。
举个例子,我自己最近在写学校里头数字图像处理的大作业。用的是WinUI3.其中有个功能是调用客户端本地计算机的Matlab命令行,然后执行一些函数啥的对图像进行处理。
这里有个问题,你需要去引用一个Matlab的MWArray.dll依赖,相信如果你写过相关程序的话应该知道这个。它功能就是做些数据转换,还有最重要的功能之一–给你提供MathWorks这个命名空间,让你能去调用matlab的命令行和一些方法。
所以如果你把源代码整个打包发给用户,发现对面在调试的时候没有MathWorks这个命名空间,是很正常的。因为这玩意,如果你直接去matlab的源文件下引用,那么最后你程序引用这个包的时候,用的是绝对路径。
问题出在哪?显而易见,用户的电脑上不一定和你有相同的matlab安装路径,当然极大情况下它们的路径都和你不一样。
所以不要直接去matlab源文件下引用。先复制一份到你项目的文件夹下,至少要在你的入口文件.sln的文件夹之后,然后再去添加引用。
有没有用绝对路径可以去.csproj里搜下MWArray,看看Path那一栏是不是相对路径。