利用Microsoft Visual Studio Installer Projects打包安装包

利用Microsoft Visual Studio Installer Projects打包安装包

  • 具体步骤
    • 步骤1:安装扩展
    • 步骤2:创建 Setup 项目
    • 步骤3:设置属性
    • 步骤4:添加输出
    • 步骤5:添加文件
    • 步骤6:添加桌面快捷方式
    • 步骤7:添加菜单快捷方式
    • 步骤8:添加卸载程序快捷方式
    • 步骤9:生成安装包

此篇博客将说明如何利用Visual Studio上的Microsoft Visual Studio Installer Projects扩展打包安装包。

具体步骤

步骤1:安装扩展

在Visual Studio中点击 扩展 -> 管理扩展 -> 联机 -> 搜索Microsoft Visual Studio Installer Projects -> 下载,最终安装好如图
在这里插入图片描述

步骤2:创建 Setup 项目

右键点击解决方案,添加Setup Project新项目,如图
在这里插入图片描述
在这里插入图片描述

步骤3:设置属性

成功创建好如下图,会生成三个路径:Application Folder用于包含目标项目编译后的文件,如dll、脚本等,便于在打包时压缩文件、安装时解压文件;User’s Desktop 主要是指用户桌面,可以在此处添加桌面快捷方式;User’s Programs Menu 主要是指用户菜单,可以在此处添加菜单快捷方式。
在这里插入图片描述
之后, 可根据软件需求,在 解决方案资源管理器 处设置项目对应属性,如图
在这里插入图片描述

步骤4:添加输出

右键点击Application Folder -> Add -> 项目输出,如图
在这里插入图片描述
在这里插入图片描述

步骤5:添加文件

由于Application Folder 添加项目输出时,只会识别dll,如下图,因此若未将所有文件载入时,需手动添加。在下图中,其并未将目标WPF项目MRISoftwareDelpoyPlatform中的Scripts文件夹加载进Application Folder。
在这里插入图片描述
针对上述问题,可右键点击Application Folder -> Add -> Folder,修改名称为Scripts,之后右键点击该文件夹 -> Add -> 文件,在弹出窗口下选择合适路径,文件添加成功后,如下图
在这里插入图片描述
最终文件添加成功之后,整个Application Folder 下的文件如下图
在这里插入图片描述

步骤6:添加桌面快捷方式

右键点击主输出 -> Create Shortcut… ,然后根据需求修改快捷方式名称,添加成功后如图所示,此处快捷方式名称为MRISoftwareDelpoyPlatform
在这里插入图片描述
之后将快捷方式剪切复制进 User’s Desktop 中,便可在安装后自动创建桌面快捷方式。如图
在这里插入图片描述
现对快捷方式添加图标,首先在Application Folder中添加ico文件,然后按照下图中顺序最后点击ok即可
在这里插入图片描述

步骤7:添加菜单快捷方式

为了便于显示菜单快捷方式与卸载快捷方式,需要在 User‘s Program 下添加文件夹,这步操作已在步骤6中实现。先添加菜单快捷方式,并为其添加图标,步骤与桌面快捷方式类似,添加成功后如图
在这里插入图片描述

步骤8:添加卸载程序快捷方式

此步骤非必须,可根据需求进行添加。若需添加Uninstall.exe,则 右击 Application Folder ->Add -> 文件,找到 C:/Windows/System32下的msiexec.exe,重命名为UnInstall,成功之后如图
在这里插入图片描述
为了实现Uninstall.exe对目标安装软件进行卸载,需做如下处理:点击项目(此处为MRIDPSetup) -> 复制属性页面中ProductCode的值,此数据为该项目独有的GUID号 -> 右键点击Uninstall.exe -> Create Shortcut … -> 修改快捷方式的名称 -> 将ProductCode按照 “/X {xxxxxx-Your-Product-GUID-xxxx-xxx-xxxx}” 格式填充至快捷方式属性界面的 Arguments -> 将快捷方式剪切粘贴至 User‘s Program Menu/MRISoftwareDeployPlatform中即可,成功后如图
在这里插入图片描述

步骤9:生成安装包

右键点击项目 -> 生成, 最后生成的安装包如图,其中setup.exe 是一个引导程序,负责启动安装过程并调用实际的安装文件 .msi 来完成安装,也可直接双击.msi文件进行安装。若有其他需求,如升级时无需卸载旧包直接覆盖升级,可点击 博客 进行查阅。
在这里插入图片描述

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

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

相关文章

初识人工智能,一文读懂人工智能概论(1)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

C语言——从键盘输入两个字串,判断它们是否相同。

代码实现&#xff1a; #include <stdio.h> #include <string.h>int main() {char str1[100], str2[100];printf("请输入第一个字串&#xff1a;");scanf("%s", str1);printf("请输入第二个字串&#xff1a;");scanf("%s"…

uc_16_UDP协议_HTTP协议

1 UDP协议 适合游戏、视频等情景&#xff0c;安全性要求不高&#xff0c;效率要求高。 1&#xff09;UDP不提供客户机与服务器的链接&#xff1a; UDP的客户机与服务器不必存在长期关系。一个UDP的客户机在通过一个套接字向一个UDP服务器发送了一个数据报之后&#xff0c;马上…

C语言----文件操作(一)

一&#xff1a;C语言中文件的概念 对于文件想必大家都很熟悉&#xff0c;无论在windows上还是Linux中&#xff0c;我们用文件去存储资料&#xff0c;记录笔记&#xff0c;常见的如txt文件&#xff0c;word文档&#xff0c;log文件等。那么&#xff0c;在C语言中文件是什么样的存…

unity 2d 入门 飞翔小鸟 死亡闪烁特效(十三)

一、c#脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Bling : MonoBehaviour {public Texture img;public float speed;public static bool changeWhite false;private float alpha0f;// Start is called before the fi…

极速学习SSM之SpringMVC笔记

文章目录 一、SpringMVC简介1、什么是MVC2、什么是SpringMVC3、SpringMVC的特点 二、HelloWorld1、开发环境2、创建maven工程a>添加web模块b>打包方式&#xff1a;warc>引入依赖 3、配置web.xmla>默认配置方式b>扩展配置方式 4、创建请求控制器5、创建springMVC…

kafka中消息key作用与分区规则关系

在 kafka 2.0.0 的 java sdk 中 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka_2.12</artifactId><version>2.0.0</version> </dependency> ProducerRecord 中类注释如下 A key/value pair to be sen…

TypeScript 之 console的使用

语言&#xff1a; TypeScript 在线工具&#xff1a; PlayGround console console 对象是一个非常强大的控制台日志显示工具&#xff0c; 可以帮助我们在浏览器中调试代码。 注&#xff1a; console不属于TypeScript的语法&#xff0c;而是由JavaScript封装的内置对象。 简单的…

[AutoSar]一种ECU间CAN通信的优化方法

目录 关键词平台说明一、背景二、问题现象三、原因四、解决办法五、实现5.1 配置5.2 code 关键词 嵌入式、C语言、autosar 平台说明 项目ValueOSautosar OSautosar厂商EB芯片厂商英飞凌 TC397编程语言C&#xff0c;C编译器TASKING 一、背景 在一个项目中&#xff0c;会从多个…

【Proteus仿真】【51单片机】光照强度检测系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使共阴数码管&#xff0c;PCF8591 ADC模块、光敏传感器等。 主要功能&#xff1a; 系统运行后&#xff0c;数码管显示光传感器采集光照强度值&#xff…

【Python网络爬虫入门教程2】成为“Spider Man”的第二课:观察目标网站、代码编写

Python 网络爬虫入门&#xff1a;Spider man的第二课 写在最前面观察目标网站代码编写 第二课总结 写在最前面 有位粉丝希望学习网络爬虫的实战技巧&#xff0c;想尝试搭建自己的爬虫环境&#xff0c;从网上抓取数据。 前面有写一篇博客分享&#xff0c;但是内容感觉太浅显了…

JavaScript常用技巧专题二

文章目录 一、前言二、生成随机字符串三、转义HTML特殊字符四、单词首字母大写五、将字符串转换为小驼峰六、删除数组中的重复值七、移除数组中的假值八、获取两个数字之间的随机数九、将数字截断到固定的小数点十、日期10.1、计算两个日期之间天数10.2、从日期中获取是一年中的…

alpine linux 之嵌入式搭建

目录 序启动修改源安装 openssh设置开机网络 ip参考 序 最近发现了 alpine linux 这个文件系统&#xff0c;这是一个基于 musl libc 和 busybox 的面向安全的轻量级 Linux 发行版。 下载了他的文件系统&#xff0c;只有 3M 多的压缩包&#xff0c;非常适合嵌入式系统。 地址…

MVC Gantt Wrapper:RadiantQ jQuery

The RadiantQ jQuery Gantt Package includes fully functional native MVC Wrappers that let you declaratively and seamlessly configure the Gantt component within your aspx or cshtm pages just like any other MVC extensions. 如果您还没有准备好转向完全基于客户端…

【动手学深度学习】(十二)现代卷积神经网络

文章目录 一、深度卷积神经网络AlexNet1.理论知识 一、深度卷积神经网络AlexNet 1.理论知识 ImageNet(2010) 图片自然物体的彩色图片手写数字的黑色图片大小468 * 38728*28样本数1.2M60K类数100010 AlexNet AlexNet赢了2012ImageNet竞赛更深更大的LeNet主要改进&#xff…

多维时序 | MATLAB实现TSOA-TCN-Multihead-Attention多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现TSOA-TCN-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现TSOA-TCN-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现TSOA-TCN-Multihead-…

lv12 开发板启动过程

1 开发板启动过程 1.1 回顾芯片手册第三章内存映射 对于arm来说&#xff0c;不是给它多大的内存都能读。寻址空间&#xff08;地址空间&#xff09;读写范围是有限的&#xff0c;寻址空间的大小与地址总线宽度有关&#xff0c;如32位&#xff0c;地址空间4G&#xff08;2^32)…

【VRTK】【VR开发】【Unity】13-攀爬

课程配套学习资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【概述】 VRTK提供两个预制件实现攀爬 Climbing Controller,用于控制Player的物理义体Climbable Interactable,用于设置可攀爬对象【设置Climbing Controller…

ffmpeg编解码——数据包(packet)概念(如何正确处理数据包中的pts与dts关系?)(有疑问)

文章目录 FFmpeg编解码——数据包&#xff08;Packet&#xff09;概念1. 数据包&#xff08;Packet&#xff09;简介2. 数据包&#xff08;Packet&#xff09;在FFmpeg中的应用2.1 从媒体文件读取数据包2.2 向媒体文件写入数据包 3. 数据包&#xff08;Packet&#xff09;相关问…

【JavaSE专栏63】多态:让你的面向对象编程变得更强大

魔法多态&#xff1a;让你的面向对象编程变得更强大 《魔法多态&#xff1a;让你的面向对象编程变得更强大》摘要 &#x1f680;引言 &#x1f310; 一、多态&#xff1a;概念与本质解析 &#x1f4da;多态性的本质多态的实现方式多态性与面向对象编程的关系多态的具体案例与应…