日记:WinUI3打包成.msix

来源网站: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那一栏是不是相对路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/79404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis主键自动生成

Mybatis主键自动生成 在MyBatis中,允许设置名称为“useGeneratedKeys”参数存在3个位置: 在xml映射器中设置useGeneratedKeys参数 在接口映射器中设置useGeneratedKeys参数 在settings元素中设置useGeneratedKeys参数 在不同位置设置的useGenerated…

【Vue篇】mac上Vue 开发环境搭建、运行Vue项目(保姆级)

概要介绍 首先,了解一下,Vue 的整体开发环境。 Homebrew:Mac 系统下的包管理器,类似于 Linux 下的 apt-get,Windows 的控制面板 - 安装删除程序Node.js: JavaScript 运行环境(runtime&#xf…

Linux基本认识

一、Linux基本概念 Linux 内核最初只是由芬兰人林纳斯托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多…

17:00面试,17:09就出来了 ,问的实在是太...

从外包出来,没想到算法死在另一家厂子 自从加入这家公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到8月一纸通知,所有人不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个兄弟内…

Qt ---进程间的通信

进程间通讯方式Qt 提供了四种进程间通信的方式: 使用共享内存(shared memory)交互:这是Qt 提供的一种各个平台均有支持的进程间交互的方式。TCP/IP:其基本思想就是将同一机器上面的两个进程一个当做服务器&#xff0c…

API(九)基于协程的并发编程SDK

一 基于协程的并发编程SDK 场景: 收到一个请求会并发发起多个请求,使用openresty提供的协程说明: 这个是高级课程,如果不理解可以先跳过遗留: APSIX和Kong深入理解openresty 标准lua的协程 ① 早期提供的轻量级协程SDK ngx.thread ngx…

博客管理系统设计与实现

摘 要 随着Internet的广泛应用,动态网页技术也应运而生。本文介绍了应用ASP动态网页技术开发博客系统的设计与实现。 博客系统主要为用户提供发表文章、浏览文章等功能,用户通过Internet可以发表一些自己撰写的文章以和其他网友进行交流。博客系统主要实…

前端JS中的异步编程与Promise

🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 一、JavaScript的异步编步机制 二、事件循环(Event Loop)和任务队列(Task Queue…

spring boot项目使用mybatis连接失败问题

我在一个Spring Boot项目中,加入数据库访问功能,使用mybatis。结果项目无法启动。以往没有出现过这种问题。不过,以前的项目,都是将现有项目拷贝过来,修修改改,数据库能访问就行,不会太多关注。…

ROS学习笔记(五)---话题发布

1. 话题通信是什么 在ROS(机器人操作系统)中,话题通信是一种常用的通信机制,用于在不同的ROS节点之间传递消息。话题通信基于发布者-订阅者模式,其中一个节点(发布者)发布消息到一个特定的话题…

java面试题第七天

一、java面试题第七天 1.方法重载和重写的区别? 方法重载:在同一个类中,不同的方法拥有同样的方法名,不一样的参数列表,这就叫做方法重载 **方法的重写:**描述的是父类和子类之间的。当父类的功能无法满…

java学习三

目录 Java 与 C 的区别 面向对象和面向过程的区别 面向对象特性 Java的基本数据类型 深拷贝和浅拷贝 Java创建对象的几种方式 final, finally, finalize 的区别 Java 与 C 的区别 Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object&#xff0c…

评价模型:层次分析法

1. 模型建立 1.1 建立层次结构模型 在深入分析实际问题的基础上,将有关的各个因素按照不同属性自上而下地分解成若干层次,同一层的诸因素从属于上一层的因素或对上层因素有影响,同时又支配下一层的因素或受到下层因素的作用。最上层为目标层…

【多线程】死锁 详解

死锁 一. 死锁是什么二. 死锁的场景1. 一个线程一把锁2. 两个线程两把锁3. N 个线程 M 把锁 三. 死锁产生的四个必要条件四. 如何避免死锁 一. 死锁是什么 死锁是这样一种情形: 多个线程同时被阻塞,因为每个进程都在等其他线程释放某些资源,…

Postman应用——初步了解postman

Postman 是一个用于构建和使用 API 的 API 平台,Postman 简化了 API 生命周期的每个步骤并简化了协作,可以更快地创建更好的 API。 Postman 包含一个基于Node.js的强大的运行时,允许您向请求(request)和分组&#xff…

UE4/UE5 动画控制

工程下载​ ​​​​​​​​​​​​​https://mbd.pub/o/bread/ZJ2cm5pu 蓝图控制sequence播放/倒播动画: 设置开启鼠标指针,开启鼠标事件 在场景中进行过场动画制作 设置控制事件

APP自动化之weditor工具

由于最近事情颇多,许久未更新文章。大家在做APP自动化测试过程中,可能使用的是Appium官方提供的inspect进行元素定位,但此工具调试不方便,于是今天给大家分享一款更好用的APP定位元素工具:weditor weditor基于web网页…

C# Onnx Yolov8 Seg 分割

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System…

合宙Air724UG LuatOS-Air LVGL API控件-开关 (Switch)

开关 (Switch) 示例代码 function event_handler(obj, event)if event lvgl.EVENT_VALUE_CHANGED thenprint("State", lvgl.switch_get_state(obj))end endsw1 lvgl.switch_create(lvgl.scr_act(), nil) lvgl.obj_align(sw1, nil, lvgl.ALIGN_CENTER, 0, -50) lvg…

ChatGPT是否可以协助人们提高逻辑思维和问题解决能力?

ChatGPT是一种强大的自然语言处理模型,它可以在一定程度上协助人们提高逻辑思维和问题解决能力。然而,它的作用是有限的,主要体现在以下几个方面: **1. 提供信息和知识:** ChatGPT可以回答各种问题并提供相关信息和知…