为VS.NET的部署项目添加卸载快捷方式

VS.NET的部署项目添加卸载快捷方式

王云

 

 

VS.NET中的部署项目为我们提供了一种非常简单的方式来安装部署我们的系统,只需轻轻的几步即可为现有的工程创建安装部署项目。甚至,它可以仅仅用作一个应用程序打包工具,对其它开发环境开发出来的应用程序打包。在我们的一个项目中就是这样做的。应用程序使用C++BUILDER开发,然后使用VS.NET2003来制作安装向导。

为什么选择VS.NET?简单!重量级的安装部署工具如WiseInstallShield等等,使用起来太复杂了,没有那么多的时间去研究。VS.NET中的部署项目非常简单,只需设置几个地方就可以了。VS.NET中的安装部署项目不仅可以用于.NET平台下的托管应用程序,而且还可以应用于传统的Win32非托管应用程序(本质上用的是MSI包)。

但是,并不是每件事情都那么完美!无法简单的为部署项目添加卸载快捷方式功能。卸载MSI的原理是执行msiexec /x ProductCode。但是在VS.NET的部署项目中确实无法实现这个功能,只能自己想办法。目前常见的办法有两种:一是将msiexec.exe打包到MSI包中,然后添加指向msiexec.exe的快捷方式并添加命令行参数。二是重新创建一个控制台或其它类型的程序,在程序内部使用固化的ProductCode来启动进程并执行卸载操作。这两种方式各有个的有缺点,前面一种方式明显加大了最终MSI的体积,后一种方式又增加了巨大的工作量,且每次修改ProductCode后都要重新编译用于卸载的辅助程序,麻烦的很。

因此,我想到另一种方式:利用参数化的批处理文件实现卸载功能。思路是:在批处理文件中执行msiexec /x ProductCode操作,ProductCode可以通过执行批处理文件时的命令行参数进行传递。在部署项目中添加指向该批处理文件的快捷方式,然后设置命令行参数为[ProductCode]即可。具体步骤如下:

1.         批处理文件内容如下(%1代表第一个命令行参数)

@echo off

msiexec.exe /x %1

2.         将其保存为Uninstall.bat,并添加到VS.NET的部署项目中。

3.         在部署项目中的开始菜单中添加指向Uninstall.bat的快捷方式,并指定Arguments[ProductCode],这样启动Uninstall.bat时便会自动的将ProductCode传递给批处理文件。

这种解决方式最大的优点就是简单,且Uninstall.bat可以应用于任何部署项目。但是,它也是有缺点的:由于卸载时MSI是通过BAT文件调出来的,因此每次都会弹出一个黑色的DOS小窗口,看起来非常不爽,但是这并不影响卸载功能的完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值