【C#】visual studio打包winForm(依赖DLL)为安装程序exe

0.简介

IDE:VS2022
平台:C# .NetFramework4.7 WinForm界面
有GDAL、EEplus库的依赖,所以在其他未安装环境的电脑中功能无法使用。

1. 安装

1.1 运行文件

在VS扩展中选择管理扩展,Microsoft Visual Studio Installer Projects 2022,安装后关闭VS重启。

右击解决方案资源管理器—>你的解决方案:添加—>新建项目,搜索Setup Project,创建:
在这里插入图片描述

解释一下这三个文件夹的功能:
1.存放一些库文件和exe文件,这种通常是安装在D:\Program Files本地中存放
2.安装程序后,会在桌面生成一个快捷方式
3.在开始菜单中是否会显示,通常将卸载程序放在里面

右击Application Folder — Add ---- 项目输出:
在这里插入图片描述

我们这里只有这一个项目project,所以就是他了,点击确定。会得到一个名字为:主输出 from AutoMetadata(Release X64) 的output类型文件。

右击Application Folder – Add – 文件:找到X64 – release文件夹下的所有文件:
注意这里是导入文件,文件夹不会被导入,所以需要手动创建文件夹 Add — Folder,然后安装上面的方式重复添加,将一层一层的文件夹一直迭代填入:

在这里插入图片描述

1.2 桌面快捷方式

通常安装软件后,桌面会产生一个快捷方式对吧,对吧,对吧

到User’s Deskto下,右击空白处,点击 创建新的快捷方式,找到刚才的主输出 from AutoMetadata(Release X64) ,重命名,这个文件的名字就是安装好软件后,在桌面快捷方式中显示的名字。

还要给他整一个图标对吧,要不太丑了…
选择一个.ico后缀的图片文件放到Application Folder下,然后在快捷方式的属性下招待Icon:
在这里插入图片描述

1.3 卸载文件

你写的Demo工具总不能是狗皮膏药对吧,删都删不掉的那种似乎不好。难不成你要让用户去文件夹中手动删除?

右击Application Folder — Add — 文件:去找C:\Windows\System32\msiexec.exe,专门负责软件卸载的,
然后到User’s Programs Menu中右击空白 — 添加新的快捷方式,找到msiexec.exe,修改名为:***卸载 或者 Uninstall **。
为了防止用户不知道开始菜单中有卸载工具,也可以在安装文件中放置一个:

在这里插入图片描述

改个名字即可。

还要修改卸载程序中的参数Code,如果有两个要修改两处。
点击刚才建好的整个setup project名字,查看属性:
在这里插入图片描述
PS:在这里修改目标平台TargetPlatform,和你的release输出对应起来即可。我选的是X64

选择ProductCode,复制这段代码,到卸载文件中找到Arguments复制过去,前面加个/X 。
规则:斜杠+大写X+一个空格

在这里插入图片描述

1.4 修改安装位置

点击Application Folder ,查看属性DefaultLocation并修改,:D:\Program Files[ProductName]
这样会默认安装到指定位置并创建一个文件夹存放。

1.5 生成输出

右击setup project,生成。
在这里插入图片描述
时间比较长,等待:
在这里插入图片描述
成功后在同.sln解决方案的文件中找到:setup project — release:
在这里插入图片描述

双击setup.exe:
在这里插入图片描述

开始菜单中的卸载程序:
在这里插入图片描述

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

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

相关文章

如何合规与安全地利用专业爬虫工具,构建企业数据竞争优势

摘要: 本文深入探讨了在当今大数据时代,企业如何通过合规且安全的方式运用专业爬虫工具,有效收集并分析海量信息,进而转化为企业独有的数据优势。我们不仅会介绍最佳实践,还会讨论关键技术和策略,帮助企业…

【网络】计算机网络基础——计算机网络背景和发展、认识网络协议、OSI七层模型、TCP/IP四层模型、网络的传输

文章目录 Linux网络1. 计算机网络背景和发展2. 认识网络协议3. OSI七层模型3.1 物理层3.2 数据链路层3.3 网络层3.4 传输层3.5 会话层3.6 表示层3.7 应用层 4. TCP/IP四层模型5. 网络的传输 Linux网络 1. 计算机网络背景和发展 开始的计算机都是独立模式(计算机之间…

谷歌新的网站索引策略:将来可能不再为您的网站编制索引

10 年前,在 WordPress 上推出新博客的同时,Google 上的内容几乎是即时索引。 搜索引擎试图尽快向用户提供所有信息,这对内容创作者也有利。 然而,随着时间的推移,情况发生了变化,现在谷歌在索引方面变得极…

【解决】ubuntu20.04 root用户无法SSH登陆问题

Ubuntu root用户无法登录的问题通常可以通过修改‌SSH配置文件和系统登录配置来解决。 修改SSH配置文件 sudo vim /etc/ssh/sshd_config 找到 PermitRootLogin 设置,并将其值更改为 yes 以允许root用户通过SSH登录 保存并关闭文件之后,需要重启SSH服务…

用uniapp 及socket.io做一个简单聊天app 2

在这里只有群聊,二个好友聊天,可以认为是建了一个二人的群聊。 const express require(express); const http require(http); const socketIo require(socket.io); const cors require(cors); // 引入 cors 中间件const app express(); const serv…

Leetcode—426. 将二叉搜索树转化为排序的双向链表【中等】Plus

2024每日刷题(148) Leetcode—426. 将二叉搜索树转化为排序的双向链表 实现代码 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node() {}Node(int _val) {val _val;left NULL;right NULL;}Node(int _val, Nod…

R包:plot1cell单细胞可视化包

介绍 plot1cell是用于单细胞数据seurat数据对象的可视化包。 安装 ## You might need to install the dependencies below if they are not available in your R library. bioc.packages <- c("biomaRt","GenomeInfoDb","EnsDb.Hsapiens.v86&qu…

无人机之起飞前准备

一、检查无人机状态 1、确保无人机的电池充满电或有足够的电量&#xff1b; 2、检查螺旋桨是否安装牢固&#xff0c;没有损坏&#xff1b; 3、确认无人机的固件是最新版本&#xff0c;以保证拥有最新的功能和修正。 二、选择合适的起飞地点 1、避免在人群密集或有障碍物的…

MySQL:增删改查、临时表、授权相关示例

目录 概念 数据完整性 主键 数据类型 精确数字 近似数字 字符串 二进制字符串 日期和时间 MySQL常用语句示例 SQL结构化查询语言 显示所有数据库 显示所有表 查看指定表的结构 查询指定表的所有列 创建一个数据库 创建表和列 插入数据记录 查询数据记录 修…

C++ Map Set的模拟实现

C Map Set的模拟实现 文章目录 前言一、Map 和 Set是什么&#xff1f;1.Set2.Map 二、困难点困难一、set和map中值的类型不同困难二、Map和Set中值不可修改困难三、红黑树中迭代器的和--1.2.- - 困难四、map中[ ] 运算符重载的实现1.修改红黑树以及Map和Set中insert的返回值1.修…

Three.js投射光线实现三维物体交互

<template><div id"webgl"></div> </template><script setup> import * as THREE from three //导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入 dat.gui import { GUI } from thre…

k8s v1.30 完整安装过程及CNI安装过程总结

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

【ffmpeg命令入门】添加水印

文章目录 前言什么是水印&#xff1f;为什么要添加水印&#xff1f;ffmpeg添加水印添加图片水印添加文字水印基本使用方法drawtext的参数 总结 前言 在视频制作和编辑的过程中&#xff0c;添加水印是一个常见且重要的步骤。水印不仅可以保护版权&#xff0c;还能用于品牌宣传和…

使用LLaMA-Factory对Llama3-8B-Chinese-Chat进行微调

文章目录 模型及数据&#xff1a;模型下载数据 LLaMA-Factory启动拉取代码启动webui 模型训练数据导入数据预览设置模型路径配置参数及参数的保存开始训练 过程观察加载模型、对话模型导出、再次加载 模型及数据&#xff1a; 模型下载 使用基于中文数据训练过的 LLaMA3 8B 模…

同步状态的广播事件

定向活动广播 你可以直接将事件从一个状态广播到另一个状态&#xff0c;以同步同一图表中的并行&#xff08;AND&#xff09;状态。以下规则适用&#xff1a; 在事件广播期间&#xff0c;接收状态必须处于活动状态。 一个图表中的操作无法将事件广播到另一个图表的状态。 与无定…

大坝安全监测设备有哪些主要功能?

推荐型号&#xff1a;TH-WY1】大坝安全监测设备的主要功能包括以下几个方面&#xff1a; 1. **实时监测大坝的各项物理参数**&#xff1a;包括应变、位移、水位、流量等<sup>1</sup><sup>2</sup>。 2. **数据处理和分析**&#xff1a;对监测数据进行处…

[Javascript】前端面试基础3【每日学习并更新10】

Web开发中会话跟踪的方法有那些 cookiesessionurl重写隐藏inputip地址 JS基本数据类型 String&#xff1a;用于表示文本数据。Number&#xff1a;用于表示数值&#xff0c;包括整数和浮点数。BigInt&#xff1a;用于表示任意精度的整数。Boolean&#xff1a;用于表示逻辑值…

【React1】React概述、基本使用、脚手架、JSX、组件

文章目录 1. React基础1.1 React 概述1.1.1 什么是React1.1.2 React 的特点声明式基于组件学习一次,随处使用1.2 React 的基本使用1.2.1 React的安装1.2.2 React的使用1.2.3 React常用方法说明React.createElement()ReactDOM.render()1.3 React 脚手架的使用1.3.1 React 脚手架…

c生万物系列(封装)

为了对c语言进行封装&#xff0c;笔者参考了lw_oopc等开源库&#xff0c;决定使用宏对结构体进行封装。 先说一下大致思想&#xff1a;通过宏&#xff0c;结构体和文件来实现封装。 大概步骤&#xff1a;抽象出类-> 使用lw_oopc库进行封装->定义接口封装底层实现 ->…

【常见开源库的二次开发】基于openssl的加密与解密——SHA算法源码解析(六)

目录 一、SHA-1算法分析&#xff1a; 1.1 Merkle Tree可信树 1.2 源码实现&#xff1a; 1.3 哈希计算功能 1.4 两种算法的区别&#xff1a; 1.4.1 目的 1.4.2 实现机制 1.4.3 输出 1.4.4 应用场景&#xff1a; 1.4 运行演示&#xff1a; 二、SHA-2算法分析&#xff1a; 2.1哈…