【转】C#安装包(自动卸载低版本)
一:版本号升级
1、ProductCode、Version(version比前一版本要高比如以前1.0.0现在就是1.0.1),
2、保持UpgradeCode不变(当设置RemovePreviousVersion=true时就是靠它来找到卸载旧版本)
二:配置版本检测
1、置detectnewerinstalledversion=true(自动检测新版本,如果装了高版本再安装低版本则提示不让安装),
2、置RemovePreviousVersion=true(安装高版本的同时自动卸载低版本,如果为false则添加/删除会出现两个相同安装记录,如 果 在卸载时想保留某些文件,则把对应文件的属性值Parmanent=true)
---------------------------------------------------------------------------------------------------------
以上两步已经可以完成版本升级操作,若需要其它操作参照下面
---------------------------------------------------------------------------------------------------------
三:添加注册表标识项
在注册表编辑器写入安装标志键值(用来下一次安装时检测是否安装过此软件)和安装路径键值(为下一次安装得到上一次安装路径可以做相应操作),此项不重要。
四、添加自定义操作
在启动条件编辑器搜索目标计算机/添加注册表搜索(主要用以得上一次安装标识和安装路径),然后再通过属性值传到 主输出来自SetupInstall(活动)
(参数传值:/productcode=[ProductCode] /regeditsetupvalue=[REGEDITSETUPVALUE] /regeditsetuppath=[REGEDITSETUPPATH] /targetdir=[TARGETDIR])
以提供给Install.cs安装类使用
from:http://blog.csdn.net/xuzhongxuan/article/details/6817096
【转】C#安装包(自动卸载低版本)的更多相关文章
- .net安装包自动安装Mysql数据库
原文:.net安装包自动安装Mysql数据库 在制作.Net安装包的时候,如果项目有用到数据库,怎么能够把数据库打包安装呢?网上已经有很多自动安装Sql Server数据库的例子,但是自动安装mysq ...
- 利用VS2017制作软件安装包与卸载程序
本博客讲述如何利用VS2017制作安装包以及相应的卸载程序,并解决过程中可能遇到的问题 一.制作安装程序 1.打开VS2017,新建项目,选择如下图所示程序: 新建成功后,会出现如下图所示目录: 2. ...
- R语言-查看加载包、卸除加载包及安装包与卸载包
在R语言中,常需要看哪个包加载了或是看多个相似功能的包,看到底是哪个包在起作用,通过加载和卸除后进行运行比较分析. 1.查看已加载的包 >(.packages()) 注意外面的括号和前面的点不能 ...
- Elasticsearch各版本的MSI安装包和Kibana各版本的zip包(Windows)
elastic各产品下载列表页:https://www.elastic.co/cn/downloads/ 打开Elasticsearch的下载页后看到的是当前最新版本的安装界面,现在最新的版本是7.4 ...
- Python 安装包时选择 python版本
安装了两个版本的python 其中一个版本为2.7 专门为python 2.7安装包使用的语句为 升级pip E:\Python27\python -m pip install --upgrade p ...
- 指定YUM安装包的体系结构或版本
在单一体系结构下同时安装32位和64位包echo ‘multilib_policy=all’ >> /etc/yum.conf 指定体系结构 查看当前系统体系结构[root@oracle ...
- lnmp一键安装包,安装多版本php,并开启redis与swoole
安装多版本的php sudo ./install.sh mphp Install ZendGuardLoader for PHP 7.1... unavailable now. Write ZendG ...
- 安装包设计-------卸载(MFC)---------知识总结
1.删除目录及其下所有文件 bool MyDeleteFile(CString Path) { // SHFILEOPSTRUCT FileOp={0}; // FileOp.fFlags = FOF ...
- 修改visual studio setup 安装顺序(解决新版安装包无法自动移除老版本程序的问题)
背景 visual studio setup 支持自动删除之前版本的安装,需要设置RemovePreviousVersions = true, DetectNewerInstalledVersion ...
随机推荐
- PHP文件系统处理(二)
1.文件的打开和关闭(读文件中的内容,向文件中写内容) 读取文件中的内容 file_get_contents() //php5以上 < ...
- git pull --rebase 做了什么? 以及 Cannot rebase: You have unstaged changes 解决办法
最近刚学 git rebase,觉得很牛逼的样子, 结果今天就被打脸了. git pull --rebase 报错: Cannot rebase: You have unstaged changes ...
- 13、SQL基础整理(流程控制begin……end)
流程控制 begin ……end将一个语句块包含起来,中间可以写任何语句 格式: begin--开始 select *from student end--结束 if declare @bianlian ...
- https 三次握手
1,客户端输入https网址,链接到server443端口: 2,服务器手中有一把钥匙和一个锁头,把锁头传递给客户端.数字证书既是公钥,又是锁头 3,客户端拿到锁头后,生成一个随机数,用锁头把随机数锁 ...
- 【转】3 Essential Sublime Text Plugins for Node & JavaScript Developers
原文转自:http://scottksmith.com/blog/2014/09/29/3-essential-sublime-text-plugins-for-node-and-javascript ...
- [DP]数位DP总结
数位DP总结 By Wine93 2013.7 1.学习链接 [数位DP] Step by Step http://blog.csdn.net/dslovemz/article/details/ ...
- 《你不知道的JavaScript》第二部分:this 详解
第1章 关于this this 是自动定义在所有函数的作用域中的关键字,用于引用合适的上下文对象. ☞ 为什么要使用 this ? this 提供了一种更优雅的方式来隐式"传递"一 ...
- 我的Java后端书架2016年暮春3.0版(转)
书架主要针对Java后端开发. 3.0版把一些后来买的.看的书添补进来,又或删掉或降级一些后来没有再翻开过的书. 更偏爱那些能用简短流畅的话,把少壮不努力的程序员所需的基础补回来的薄书,而有些教课书可 ...
- C++ 并发消息队列
C++ 并发消息队列 在网上找到了一份POSIX线程显示的并发消息队列示例代码: http://codereview.stackexchange.com/questions/41604/thread- ...
- LabVIEW串口通信的一个例子-串口"示波器"
1.程序界面:<ignore_js_op> 功能介绍:左边上方串口接收区,下方为串口字符发送区.右方为一个波形图表,在程序内部每次将串口发送过来的数据,以f%格式化,显示在波形图表上.按钮 ...