本博客讲述如何利用VS2017制作安装包以及相应的卸载程序,并解决过程中可能遇到的问题

一、制作安装程序

1.打开VS2017,新建项目,选择如下图所示程序:

新建成功后,会出现如下图所示目录:

2.添加安装文件的主入口,在Application Folder --> Add --> 项目输出 如下图所示:

在弹出的对话框中,即可选择当前解决方案下的所有程序文件,选择对应的入口程序即可,如下图所示:

3.添加其他程序文件与资源文件

由于选择项目输出后,自动添加进来的文件是该入口程序在项目中引用的文件,其他第三方DLL或者资源文件等没有添加,需要手动添加,直接在Application Folder --> Add --> 文件或者将需要添加的文件复制到目录中即可

4.添加桌面快捷方式

在Application Folder文件夹中,选择刚才添加进来的主输出,右键,出现如下图所示对话框:

选择第一条记录,并将复制出来的记录复制到User's DeskTop文件夹下

5.打开 User's DeskTop文件夹,在刚才复制的文件上右键,选择属性窗口,设置快捷方式的图标,名称等信息,如下图所示:

6.设置菜单栏

用户的菜单栏在“User's Programs Menu”设置,由于一个完整的安装程序会有安装与卸载两个功能,为了保证程序在同一位置显示,因此建议在User's Programs Menu中新建一个文件夹,将安装与卸载程序放在一起,保持美观

按照第四步的操作,创建一个主输出,并复制到User's Programs Menu文件夹中刚才创建的文件夹内

7.按照第6步操作的方式设置文件属性

8.设置系统所需.netFramework的配置

由于Winform程序的运行需要有.netFramework版本的支持,因此对于不符合.netFramework版本的客户端要能版主用户自动安装.netFramework相关版本

在安装程序主目录上右键,选择属性,如下图所示:

点击弹出框中如下图所示按钮:

在弹出的对话框中即可配置需要配套的.netFramework版本,如下图:

9.制作卸载程序

在"C:\WINDOWS\system32"路径下,找到msiexec.exe 添加到应用程序文件夹中,创建快捷方式,并命名"卸载管理系统"或"Uninstall",将起复制到第六步新建的文件夹下

在主程序中找到安装程序的ProductCode,选择安装程序文件,即可直接在属性页看到,如下图所示:

记录下这个ProductCode

在刚才创建的msiexec.exe快捷方式(注意是快捷方式)上进入属性页面,在Arguments选项中 输入/x 及ProductCode; 例如:/x {A29696DC-67CA-3ADE-6965-ACC7D698CB7}

至此,一个程序的安装程序与卸载程序制作过程完毕。

可能遇到的问题

1.重复安装程序,会出现如下图所示提示:

解决方法:之前版本和当前版本的UpgradeCode必须一样,但是ProductCode必须不同,即程序的id一致,版本不一致,才可以。

修改程序的ProductCode,并将安装程序的Version改成更大的版本号,同时更改RemovePreviousVersions为True,问题解决。(注意:在修改ProductCode之后,需要将卸载程序的ProductCode同时修改,否则程序无法卸载)

利用VS2017制作软件安装包与卸载程序的更多相关文章

  1. 使用Qt Installer Framework制作软件安装包

    概述 Qt Installer Framework(缩写QIF)是Qt官方用于生成软件安装包的工具.包括Qt Creator和Qt Installer Framework自身的安装包都是由这个工具制作 ...

  2. 使用Inno Setup 制作软件安装包详细教程(与开发语言无关)

    前言:关于如何制作一个软件安装包的教程,与编程语言无关.以下,请看详情~ 1.下载Inno Setup,下载地址:https://jrsoftware.org/isinfo.php 2.下载最新版本即 ...

  3. Windows下制作软件安装包

    一.下载 首先,下载SetupFactory9.0.3.0Trial(下载链接:https://www.haolizi.net/example/view_65380.html) 下载好会有一个压缩包 ...

  4. vs2017 制作winfrom 安装包!

    https://www.cnblogs.com/GuZhenYin/p/8176981.html 转载 前言 项目中有用到winfrom做配套的打印程序,直接给客户一个debug文件夹,当然不是很好. ...

  5. Inno Step软件安装包制作教程

    Inno setup制作软件安装包教程 1,Inno Setup介绍 Inno Setup 是一个免费的安装制作软件,小巧.简便.精美是其最大特点,支持pascal脚本,能快速制作出标准Windows ...

  6. 快速创建软件安装包-ClickOnce

    大家好,我是沙漠尽头的狼. .NET是免费,跨平台,开源,用于构建所有应用的开发人员平台. 今天介绍使用ClickOnce制作软件安装包,首先我们先了解什么是ClickOne. 1. 什么是Click ...

  7. vs2017 rc 离线安装包制作

    vs2017 rc 离线安装包制作 1.下载在线安装包:https://aka.ms/vs/15/release/vs_Enterprise.exe 2.制作离线安装包: vs_Enterprise. ...

  8. installshield制作的安装包卸载时提示重启动的原因以及解决办法

    原文:installshield制作的安装包卸载时提示重启动的原因以及解决办法 有时候卸载installshield制作的安装包程序,卸载完会提示是否重启电脑以完成所有卸载,产生这个提示的常见原因有如 ...

  9. 7z制作自解压安装包

    像7z和winRAR这样的压缩工具都支持制作自解压的文件.所谓自解压的文件就是不需要目标机器上安装解压工具,通过运行压缩包自己即可解压出压缩包中的文件.下面我们就介绍一下如何利用7z的自解压功能制作应 ...

随机推荐

  1. 049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句

    049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句 本文知识点:break语句 break语句 break语句前情回顾 1.swi ...

  2. PicGo图床与Typora(PicGo+Typora+GitHub的完整设置)

    PicGo图床与Typora(PicGo+Typora+GitHub的完整设置) 如何更方便的用markdown写文章,接下来按照我的步骤来,你一定可以的,这个文章包含了GitHub图床配置.PicG ...

  3. 【3】Java面试-Servlet

    Servlet面试问题 Q1.什么是servlet? Java Servlet是服务器端技术,通过提供对动态响应和数据持久性的支持来扩展Web服务器的功能. javax.servlet和javax.s ...

  4. 两个多维高斯分布之间的KL散度推导

    在深度学习中,我们通常对模型进行抽样并计算与真实样本之间的损失,来估计模型分布与真实分布之间的差异.并且损失可以定义得很简单,比如二范数即可.但是对于已知参数的两个确定分布之间的差异,我们就要通过推导 ...

  5. GC调优-XX:PrintGCDetails深度解析

    查看程序运行GC的运行情况 资源充足的GC情况 新生代 老年代 元空间 因为现在资源充足没有发生GC *案例:将JVM初始化内存与最大内存(防止内存抖动,反复GC)调至10m,new一个50m的数组对 ...

  6. java 的 callback

    Java 本身没有回调这一说,但是面向对象可以模拟出来. 1. 回调接口对象 ICommand package com.git.Cmder; public interface ICommand { v ...

  7. linux centos 03

    linux用户权限相关 root用户  相当于qq群的群主 sudo命令  相当于qq群的管理员 普通用户  相当于qq群的 水军 超级用户root的UID是 0  组ID也是 0  普通用户的UID ...

  8. day35 Pyhton 网络编程02

    一内容回顾 网络基础 网络应用开发架构 B/S架构   浏览器直接作为客户端的程序 C/S架构 B/S是特殊的C/S osi七层模型 应用层  python代码   http  https  ftp  ...

  9. 利用github创建个人网站

    先建个仓库,仓库名为: 用户名.github.io 进入仓库,删除README.md文件 新建个文件,文件名为: index.html,内容根据自己要求编写 打开网站,地址:https://用户名.g ...

  10. 《python 网络数据采集》代码更新

    <python 网络数据采集>这本书中会出现很多这一段代码: 1 from urllib.request import urlopen 2 from bs4 import Beautifu ...