C#制作打包安装程序,安装程序类使用

这里写目录标题

    • 安装Microsoft Visual Studio Installer Projects
    • 创建安装项目
    • 设置安装程序文件
    • 设置程序桌面图标
    • 给程序设置安装程序名称
    • 安装程序类怎么使用
    • Installer1.cs
    • 自定义安装步骤
    • 自定义设置安装程序路径,让用户安装时不能选择安装路径
    • 生成安装包

安装Microsoft Visual Studio Installer Projects

解决方案选中,visual studio界面顶部菜单栏,扩展—>管理扩展—>联机,在右侧搜索栏输入setup,搜索项目,安装Microsoft Visual Studio Installer Projects 2022,
在这里插入图片描述

创建安装项目

然后在解决方案上右键,新建项目,搜索setup,选中Setup Project下一步创建此项目;
在这里插入图片描述
在安装项目上右键,选择View–>文件系统—>Application Folder,去要发布的程序复制他的Release版本文件到此栏粘贴即可,
在这里插入图片描述

设置安装程序文件

在这里插入图片描述

设置程序桌面图标

选中User’s Desktop,然后点击右键—>创建新的快捷方式,然后选择Application Folder里面的exe,点击ok,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

给程序设置安装程序名称

此名称显示在控制面板–程序和功能–中的名称。选择安装项目,然后按F4,弹出属性窗口

  • ProductName:设置程序安装名称,
  • Author:设置程序发布人,一般是公司名称
  • TargetPlatform : 指定软件目标平台 x86 or x64
  • Version :发布版本号

在这里插入图片描述

安装程序类怎么使用

在解决方案上右键,创建一个控制台应用程序ProjectStepOperate,项目名称自定义,然后控制台应用程序项目,右键,新建项,选择安装程序类Installer1.cs,这个ProjectStepOperate项目用于安装项目选择操作程序,在安装项目中,选择View—>自定义操作,出现如下图界面,把ProjectStepOperate项目生成一下,然后在bin/release/下选择exe,作为Install的操作程序,Uninstall雷同,将如此Installer1.cs会在安装时被调用,
在这里插入图片描述
在这里插入图片描述

Installer1.cs

在安装程序类中,可以在OnAfterInstall方法中,写注册表创建项,

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Whl.Tool;namespace ProjectStepOperate
{/// <summary>/// 安装控制/// </summary>/// 创建时间:2023-7-7 16:56:50, [RunInstaller(true)]public partial class Installer1 : System.Configuration.Install.Installer{public Installer1(){InitializeComponent();}protected override void OnBeforeInstall(IDictionary savedState){//File.WriteAllText("c://Installer1.txt", "安装前执行," + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));RegeditWrite.AddLog("安装前执行OnBeforeInstall");string dir = "c://zyt_bluetooth_service";if (!System.IO.Directory.Exists(dir)){Directory.CreateDirectory(dir);RegeditWrite.AddLog(dir + "安装目录创建成功");}//base.OnBeforeInstall(savedState);}protected override void OnAfterInstall(IDictionary savedState){//File.WriteAllText("c://Installer2.txt", "安装之后执行," + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));RegeditWrite.AddLog("安装之后执行OnAfterInstall");//写入注册表RegeditWrite.WriteExeRunAgreement();}}
}

自定义安装步骤

在用户界面,可以吧“安装文件夹”删除,然后就可以让用户不能选择安装的目录,
在这里插入图片描述

自定义设置安装程序路径,让用户安装时不能选择安装路径

在Application Folder右键属性,修改DefaultLocation的值,比如改为C:\zyt_bluetooth_service,
则程序将安装在此路径,可以再用户界面中 Install—>Start—>,删除安装文件夹,删除安装文件夹后,用户安装界面将不再让其选择安装目录,程序将自动安装到设置的C:\zyt_bluetooth_service
在这里插入图片描述

生成安装包

在安装项目右键,点击“重新生成”,将在项目文件夹中自动生成安装包,文件xxxx.msi可以双击安装。
在这里插入图片描述

参考文章
https://zhuanlan.zhihu.com/p/622419157?utm_id=0
https://blog.csdn.net/qq_39727831/article/details/124421534

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

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

相关文章

数据结构(王道)——顺序表的基本操作(查找)

顺序表基本操作之按位查找&#xff1a; 顺序表基本操作之按值查找&#xff1a; 关于结构体类型是否相等的比较方法 顺序表查找总结&#xff1a;

Mysql select查询练习

1、查询出部门编号为30的所有员工&#xff1a; select * from emp where deptno30; 2、所有销售员的姓名、编号和部门编号&#xff1a; select ename,empno,deptno from emp where job销售员; 3、找出奖金高于工资的员工&#xff1a; select * from emp where comm > sai…

2023-7-12-第十七式状态模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

获取全国各地行政区的genjson数据以及使用leaflet加载行政区数据

前言 在写代码之前&#xff0c;我们需要做一些准备工作&#xff0c;需要有一份某个行政区的geojson数据&#xff0c;如果你没有也没关系&#xff0c;我们可以去下载&#xff0c;地址&#xff1a;geojson数据下载网站 打开网站&#xff0c;选择自己想要获取的行政区&#xff0…

【FAQ】API6低代码开发问题汇总

参考文档&#xff1a; 低代码开发参考文档&#xff1a; 文档中心:使用低代码进行开发 基于景区模板开发元服务&#xff1a; 文档中心:模板简介 使用API6低代码开发遇到的问题汇总情况如下&#xff1a; 1、低代码环境下&#xff0c;如何实现box-shadow阴影效果的配置&#…

瑞萨RFP工具使用问题总结

最近在用瑞萨的RH850&#xff0c;需要用到瑞萨提供的刷新工具RFP&#xff08;Renesas Flash Programmer&#xff09;&#xff0c;但是总是遇到一些问题&#xff0c;除了一些能够在官网上找到答案的问题&#xff0c;还遇到了其他各种各样的问题&#xff0c;这里记录一下问题和对…

(五)Flask之深入剖析路由源码

路由&#xff08;Route&#xff09;这个概念在所有web框架中都非常重要&#xff0c;它是用于定义URL和对应的处理函数&#xff08;视图&#xff09;之间的映射关系。通过定义路由&#xff0c;可以使web框架应用程序能够响应不同的URL请求&#xff0c;并执行相应的逻辑。 源码剖…

巧用浮动布局、解决高度塌陷实例分享

问题 如图所示&#xff0c;这种效果该怎么实现呢&#xff1f; 面包屑导航和按钮一行两端显示面包屑或编辑栏超出宽度则自动另行显示 实现 采用浮动&#xff0c;绿色块左浮&#xff0c;蓝色块右浮&#xff0c;利用浮动特性实现宽度超出另一行显示的效果&#xff0c;并是动态的…

flutter页面添加透明遮罩

路由工具 import package:test/main.dart; import package:flutter/material.dart;import circle_page_route.dart;class NavigatorUtil {static push(Widget page, {BuildContext context}) {return Navigator.push(context ?? navigatorKey.currentContext,MaterialPageRo…

Docker安装xxl-job

创建数据库 xxl_job数据库下载地址&#xff1a;https://pan.baidu.com/s/1XkirmK8_NUGj967MuBIPlQ?pwddlyl 拉取镜像 docker pull xuxueli/xxl-job-admin:2.3.1 防火墙打开端口 firewall-cmd --zonepublic --add-port8088/tcp --permanent firewall-cmd --reload 启动运行…

2023-7-13-第十八式观察者模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

Linux离线安装Jenkins、Maven、Gitlab、Git,部署Java项目

安装Java 《Linux安装java》 安装Maven 把Maven上传到Linux服务器/data/目录下进行解压 cd /data/ && tar -zxvf apache-maven-3.9.3-bin.tar.gz配置环境变量 vim /etc/profile找到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL在下面追加 # mave…