Visual studio下使用 Wix 打包 C#/WPF 程序的中文安装包

news2024/10/6 1:08:39

Visual studio下使用 Wix 打包 C#/WPF 程序的中文安装包

  • 1 下载并安装 Wix Toolset
    • 1.1 下载WIX Toolset
    • 1.2 安装
    • 1.3 配置系统环境变量path
    • 1.4 找不到 WiX 工具 candle.exe
  • 2 安装Visual studio 20202,并安装插件
    • 2.1 下载并安装 Visual Studio
    • 2.2 步骤二:安装 Wix v3 扩展插件
  • 3 创建安装项目
    • 3.1 创建 Wix Toolset v3 安装项目
    • 3.2 我们来了解下 Product 的属性
  • 2.3 打中文安装包
    • 3.4 修改 Product 属性
      • 3.4.1 修改Id
      • 3.4.2 设置简体中文,修改Id、产品名称、制作厂商
    • 3.5 添加引用
      • 3.5.1 准备一个待打包的项目
    • 3.5.2 添加引用待打包的项目
  • 4 添加用户界面
  • 4.1 引用WixUIExtension.dll
    • 4.2 使用wix用户界面
    • 4.3 修改程序图标与控制面板图标
    • 4.4 修改安装成功后显示的提示信息

1 下载并安装 Wix Toolset

1.1 下载WIX Toolset

下载路径:Release WiX Toolset v3.11.2 · wixtoolset/wix3 · GitHub,下载地址:https://wixtoolset.org/releases/v3.11/stable
在这里插入图片描述

1.2 安装

下载者两个都可以,建议下载wix311.exe,直接安装。
在这里插入图片描述
在这里插入图片描述

1.3 配置系统环境变量path

在这里插入图片描述

如果下载压缩包,则直接解压,然后将解压路径添加到系统环境变量path里面去
在这里插入图片描述

1.4 找不到 WiX 工具 candle.exe

  • 问题:编译MyWixSetup时出错,错误信息如下:
未能加载文件或程序集“System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。	MyWixSetup	candle.exe	0		

当我们在使用C#开发程序时,经常会遇到需要引用外部的dll文件来扩展程序的功能或者使用一些第三方库。然而,在引用这些dll文件的过程中,有时候会遇到上面的问题。
这个错误信息通常意味着程序在执行过程中需要引用一个名为“System.Runtime”的dll文件,但是系统找不到这个文件或者它的某一个依赖项。这种情况可能会导致程序无法正常执行,给开发人员带来很大的困扰。
那么,我们该如何解决这个问题呢?首先,我们需要明白这个错误信息背后的原因。通常情况下,这种错误是由于程序所需的dll文件不存在、版本不匹配或者缺少依赖项导致的。因此,我们可以从以下几个方面来排查和解决这个问题:

  1. 确保所需的dll文件存在

首先,我们需要确认所需的“System.Runtime” dll文件是否存在于我们的项目引用路径中。有时候,我们可能会将dll文件放在错误的路径下或者忘记将它包含在项目中,导致程序无法找到这个文件。因此,我们需要检查项目引用路径和相关配置,确保所需的dll文件被正确引用。

  • 启动windows的.Net Framework 3.5.1
    打开控制面板 ==> 程序和功能 ==> 启用或关闭windows功能,勾选如下选项

2 安装Visual studio 20202,并安装插件

2.1 下载并安装 Visual Studio

从Visual Studio 官方网站的下载想安装版本的在线安装程序,运行后在线安装
官方网站:https://visualstudio.microsoft.com/zh-hans/downloads/
在这里插入图片描述

2.2 步骤二:安装 Wix v3 扩展插件

  • 打开Visual Studio 2022,选择 “扩展->管理扩展(…)”,在出现的扩展管理器中输入"Wix",找到Wix v3的扩展插件,点击右边的"安装"按钮进行安装。在这里插入图片描述
    等待下载完成后重启Visual Studio,出现VSIX安装界面
    在这里插入图片描述
    在这里插入图片描述
    选择Modify
    在这里插入图片描述
    等待安装完成,重启Visual Studio

3 创建安装项目

3.1 创建 Wix Toolset v3 安装项目

  • 新建项目,打开想打包程序集的解决方案,选中解决方案->右键->添加->新建项目,选择Wix类型的Setup Project for Wix Toolset v3:
    在这里插入图片描述
    配置项目名称和位置
    在这里插入图片描述
    创建后,解决方案下面会多一个MyWixSetup工程,这个工程下面有一个Product.wxs 文件,默认已经打开,这是一个XML文件,也就是工程的配置文件。
    在这里插入图片描述

3.2 我们来了解下 Product 的属性

属性 说明
Id 产品的GUID,GUID可以借助VS–>工具—>创建GUID来创建,不要括号
Codepage

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

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

相关文章

Docker安装遇到问题:curl: (7) Failed to connect to download.docker.com port 443: 拒绝连接

问题描述 首先,完全按照Docker官方文档进行安装: Install Docker Engine on Ubuntu | Docker Docs 在第1步:Set up Dockers apt repository,执行如下指令: sudo curl -fsSL https://download.docker.com/linux/ubu…

免杀笔记 ---> Session0--DLL注入

刚更新完上一篇,于是我们就马不停蹄的去跟新下一篇!! Session0注入 :: 各位看官如果觉得还不错的可以给博主点个赞💕💕 这次,我把这个脚本直接传到Github上了 喜欢的师傅点个Star噢…

android新闻app(二)

新闻详细页: 历史浏览记录SQList: 分类: 历史浏览记录主体UI和详细: 侧边栏: 参考:浩宇开发

QWidget窗口抗锯齿圆角的一个实现方案(支持子控件)2

QWidget窗口抗锯齿圆角的一个实现方案(支持子控件)2 本方案使用了QGraphicsEffect,由于QGraphicsEffect对一些控件会有渲染问题,比如列表、表格等,所以暂时仅作为研究,优先其他方案 在之前的文章中&#…

SQL面试题-留存率计算

表定义: create table if not exists liuliang_detail (user_id string comment ,record_time string comment yyyymmdd hh:mi:ss ) comment 流量明细表 ; 方法一: 计算的是整段时间范围内,每一天为基准的所有的留存1、2、7天的用户数。 …

Java 基础知识之 switch 语句和 yield 关键字

传统 switch 语句 传统的 switch 语句我们已经写了一万遍了,以下是一个典型的 switch 语句: int dayOfWeek 3; switch (dayOfWeek) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【17】认证服务01—短信/邮件/异常/MD5

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【17】认证服务01 环境搭建验证码倒计时短信服务邮件服务验证码短信形式:邮件形式: 异常机制MD5参考 环境搭建 C:\Windows\System32\drivers\etc\hosts 192.168.…

昇思25天学习打卡营第09天 | 保存与加载

昇思25天学习打卡营第09天 | 保存与加载 在训练网络模型的过程中,通常希望保存中间状态和最后的结果,用于后续的模型微调、推理和部署。 文章目录 昇思25天学习打卡营第09天 | 保存与加载定义网络保存模型加载模型保存MindIR加载MindIR总结打卡 定义网…

RUST 编程语言 绘制随机颜色图片 画圆形 画矩形 画直线

什么是Rust Rust是一种系统编程语言,旨在提供高性能和安全性。它是由Mozilla和其开发社区创建的开源语言,设计目标是在C的应用场景中提供一种现代、可靠和高效的选择。Rust的目标是成为一种通用编程语言,能够处理各种计算任务,包…

#数据结构 顺序表

线性表 顺序表 每种结构都有它存在意义 线性表的顺序存储实现指的是用一组连续的存储单元存储线性表的数据元素。 概念 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性表,一般情况下采用数组存储。在数组上完成数据的增查改删。 逻辑结构&#…

数值分析笔记(五)线性方程组解法

三角分解法 A的杜利特分解公式如下: u 1 j a 1 j ( j 1 , 2 , ⋯ , n ) , l i 1 a i 1 / u 11 ( i 2 , 3 , ⋯ , n ) , u k j a k j − ∑ m 1 k − 1 l b m u m j ⇒ a k j ( j k , k 1 , ⋯ , n ) , l i k ( a i k − ∑ m 1 k − 1 l i n u m k ) /…

阶段三:项目开发---搭建项目前后端系统基础架构:QA:可能遇到的问题及解决方案

任务实现 常见问题1:文件监视程序的系统限制。 1、错误提示:如果在Vue项目中,使用【 npm run serve】运行kongguan_web项目时报以下错误: 2、产生原因:文件监视程序的系统产生了限制,达到了默认的上限&am…

数据结构1:C++实现变长数组

数组作为线性表的一种,具有内存连续这一特点,可以通过下标访问元素,并且下标访问的时间复杂的是O(1),在数组的末尾插入和删除元素的时间复杂度同样是O(1),我们使用C实现一个简单的边长数组。 数据结构定义 class Arr…

【Docker系列】Docker 命令行输出格式化指南

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【Python】搭建属于自己 AI 机器人

目录 前言 1 准备工作 1.1 环境搭建 1.2 获取 API KEY 2 写代码 2.1 引用库 2.2 创建用户 2.3 创建对话 2.4 输出内容 2.5 调试 2.6 全部代码 2.7 简短的总结 3 优化代码 3.1 规范代码 3.1.1 引用库 3.1.2 创建提示词 3.1.3 创建模型 3.1.4 规范输出&#xf…

cs231n作业2 双层神经网络

双层神经网络 我们选用ReLU函数和softmax函数: 步骤: 1、LOSS损失函数(前向传播)与梯度(后向传播)计算 Forward: 计算score,再根据score计算loss Backward:分别对W2、b2、W1、b1求…

品质至上!中国星坤连接器的发展之道!

在电子连接技术领域,中国星坤以其卓越的创新能力和对品质的不懈追求,赢得了业界的广泛认可。凭借在高精度连接器设计和制造上的领先地位,星坤不仅获得了多项实用新型专利,更通过一系列国际质量管理体系认证,彰显了其产…

知识社区在线提问小程序模板源码

蓝色的知识问答,问答交流,知识社区,在线提问手机app小程序网页模板。包含:社区主页、提问、我的、绑定手机,实名认证等。 知识社区在线提问小程序模板源码

P5. 微服务: Bot代码的执行

P5. 微服务: Bot代码的执行 0 概述1 Bot代码执行框架2 Bot代码传递给BotRunningSystem3 微服务: Bot代码执行的实现逻辑3.1 整体微服务逻辑概述3.2 生产者消费者模型实现3.3 consume() 执行代码函数的实现3.4 执行结果返回给 nextStep 4 扩展4.1 Bot代码的语言 0 概述 本章介绍…

Keysight 是德 DSA91304A 高性能示波器

Keysight 是德 DSA91304A 高性能示波器 DSA91304A Infiniium 高性能示波器:13 GHz 13 GHz4个模拟通道高达 1 Gpts 存储器和 40 GSa/s 采样率可以提供更完整的信号迹线捕获50 mV/格时低至 1.73 mVrms 的本底噪声和深入的抖动分析功能可以确保卓越的测量精度硬件加速…