VS.net 安装包制作 个人经验记录
1.添加项目输出
在文件系统编辑器中,如果项目在一个解决方案中,则可以添加项目的主输出,为自动识别添加生成的exe,config,dll引用等;项目经常还包括一些资源文件,如图片,xml等,这些设置为内容的话,则可以添加项目的内容文件;如果还有一些特殊文件添加,比如第3点说到msiexec.exe文件,则可以直接浏览添加。
2.如何使新生成的安装包在安装时自动覆盖以前安装过的版本
设置部署项目属性RemovePreviousVersion为True,并将Version升高,并在生成时提示的“建议在更改版本时更改ProductCode,要进行该操作吗?”选择是。
3.如何添加卸载
找到msiexec.exe文件,一般在windows/system32下,添加到文件系统中,可以改名为UnInstall.exe,然后设置其快捷方式,最好重命名快捷方式并放到程序目录中,并设置其Arguments属性值为/x {[ProductCode]},这里用[ProductCode]可以自动获取安装包的ProductCode,网上多数让你直接拷贝部署项目的ProductCode,但是第2点提到了ProductCode是会变的。(ProductCode变是为了覆盖安装,ProductCode不变是为了检测升级)
4.如何在安装整个过程中实现自定义操作
首先需要新建一个类库项目,然后在其中添加安装程序类,根据需要添加相应的重写方法
例如要在安装完成后启动程序,可以这样写
{
string appPath = Context.Parameters["targetdir"];
Process.Start(appPath + "XXX.exe");
base.OnAfterInstall(savedState);
}
Context.Parameters["targetdir"]为获取安装路径,需要在部署项目中设置
其次,在部署项目的自定义操作中,把安装,提交,回滚,卸载都添加上面项目的主输出
设置主输出的属性CustomActionData值为/targetdir="[TARGETDIR]\",这样Context.Parameters["targetdir"]才能获取到安装路径。