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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人脸识别打卡系统一站式开发【基于Pyqt5的C/S架构】

人脸识别打卡系统 1、运用场景 课堂签到,上班打卡,进出门身份验证。 2、功能架构 人脸录入,打卡签到,声音提醒,打卡信息导出: 3、技术栈 python3.8,sqlite3,opencv,face_recognition,PyQt5,csv 第三方库: asgiref==3.8.1 click==8.1.7 colorama==0.4.6 co…

【TB作品】51单片机 Proteus仿真 00001仿真实物PID电机调速系统

实验报告:Proteus 仿真 PID 电机调速系统 一、实验背景 PID(比例-积分-微分)控制器广泛应用于工业控制系统中,用于调节各种物理变量。本实验的目的是通过 Proteus 仿真软件设计并实现一个 PID 电机调速系统,以控制直…

Flutter-实现悬浮分组列表

在本篇博客中,我们将介绍如何使用 Flutter 实现一个带有分组列表的应用程序。我们将通过 CustomScrollView 和 Sliver 组件来实现该功能。 需求 我们需要实现一个分组列表,分组包含固定的标题和若干个列表项。具体分组如下: 水果动物职业菜…

C++、QT

目录 一、项目介绍 二、项目展示 三、源码获取 一、项目介绍 人事端: 1、【产品中心】产品案列、新闻动态的发布; 2、【员工管理】新增、修改、删除、搜索功能;合同以图片的方式上传 3、【考勤总览】根据日期显示所有员工上班、下班时间…

STMF4学习笔记RTC(天空星)

前言:本篇笔记参考嘉立创文档,连接放在最后 #RTC相关概念定义 Real-Time Clock 缩写 RTC 翻译 实时时钟,是单片机片内外设的一种,作用于提供准确的时间还有日期,这个外设有独立的电源,当单片机停止供电…

入门PHP就来我这(高级)11 ~ MySQL

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享 路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。 1 PHP操作MySQL数据库的方法 PHP操作数据库现在用的多的是mysqli拓展库,mysqli扩…

用HttpURLConnection复现http响应码405

目录 使用GET方法,访问GET接口,服务端返回405使用GET方法,访问POST接口,服务端返回405使用POST方法,访问GET接口,服务端返回405 使用GET方法,访问GET接口,服务端返回405 发生场景&a…

SSRF靶场通关合集

目录 前言 SSRF总结 1.pikachu 1.1SSRF(curl) 1.1.1http协议 1.1.2 file协议查看本地文件 1.1.3 dict协议扫描内网主机开放端口 1.2 SSRF(file_get_content) 1.2.1 file读取本地文件 1.2.2 php://filter/读php源代码 2.DoraBox靶场 前言 最近…

C++第一弹 -- C++基础语法上(命名空间 输入输出 缺省参数 函数重载 引用)

目录 前言一. C关键字(C98)二. 命名空间1.命名空间的定义2.命名空间的使用3.其它部分 三. C输入&输出四. 缺省参数1. 缺省参数的概念2.缺省参数的分类 五. 函数重载1.函数重载的概念2. 为什么C支持函数重载, 而C语言不支持重载呢? 六. 引用1.引用的概念2.引用的特性3.常引…

sqlite 数据库 介绍

文章目录 前言一、什么是 SQLite ?二、语法三、SQLite 场景四、磁盘文件 前言 下载 目前已经出到了, Version 3.46.0 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是…

数学建模算法目标规划

在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济 效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记 LP)则是数学规划的一个重要分支。特别是在计算机能处理成千上万个…

第二届网络、通信与智能计算国际会议(NCIC 2024)

随着科技的飞速发展,网络通信与智能计算领域正迎来前所未有的变革。在这样的背景下,网络、通信与智能计算国际会议(NCIC 2024)将于2024年11月22日至25日在中国北京隆重召开。本次大会汇聚了国际学术界的顶尖专家和行业精英&#x…

目标检测算法简述

招聘信息共享社群https://bbs.csdn.net/forums/f6512aad40c7444c8252754ce2dbb427 目标检测算法是一种计算机视觉技术,用于识别图像或视频中的特定对象,并确定这些对象在场景中的精确位置。这些算法通常结合了分类和定位的功能,能够输出每个…

算法系列--分治排序|归并排序|逆序对的求解

一.基本概念与实现 归并排序(mergeSort)也是基于分治思想的一种排序方式,思路如下: 分解:根据中间下标mid将数组分解为两部分解决:不断执行上述分解过程,当分解到只有一个元素时,停止分解,此时就是有序的合并:合并两个有序的子区间,所有子区间合并的结果就是原问题的解 归并…

ESP32 蓝牙网关实践:BLE 设备数据采集与 MQTT 云平台发布(附代码示例)

摘要: 本文详细介绍了如何使用 ESP32 构建强大的蓝牙网关,实现蓝牙设备与 Wi-Fi/互联网之间的无缝连接和数据桥接。文章涵盖了连接和桥接功能、数据处理和分析能力,并提供了详细的代码示例和 Mermaid 生成的图表,助您轻松构建自己的蓝牙网关解…

SCI一区TOP|准随机分形搜索算法(QRFS)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年,LA Beltran受到分形几何、低差异序列启发,提出了准随机分形搜索算法(Quasi-random Fractal Search, QRFS)。 2.算法原理 2.1算法思…

【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…

SQL面试题-留存率计算

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

cs231n作业2 双层神经网络

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

使用Charles mock服务端响应数据

背景 服务端未提供接口/服务端接口返回结果有逻辑限制(次数限制),不能通过原始接口返回多次模拟预期的返回结果,例如边界值情况 客户端受到接口响应数据的限制,无法继续开发或测试,会极大影响开发测试效率…