Winform程序打包(用户自定义操作)
这一个星期都在捣鼓这东西,找了很多资料,发现介绍用户自定义操作这方面的文章很少,所以将这几天的使用心得写一下,在这里做个备忘吧,比较粗浅(可能还有错),见谅~
环境:VS2010
打包工具:自带Visual Studio Installer
1、在需要打包程序项目的解决方案中,新建Visual Studio Installer项目
2、比较懒,常规的打包就不赘述了,跳过
3、自定义安装操作
1)视图-用户界面
①在弹出的界面中可以添加用户自定义的界面,但是可供选择的界面很有限。
②新建了一个文本框(A)对话框,下面是它的属性
③实际效果(注:Property为变量名,以此将用户输入提交至自定义安装类程序)
④创建安装类库(解决方案-新建项目-windows-类库)
⑤删除项目自动生成的cs,添加新项-常规-安装程序类,初始如下图
⑥重写Install方法
public override void Install(System.Collections.IDictionary stateSaver) { //通过下面的代码即可接收由安装程序传来的变量值,如果原值中包含“\”, //那么传进来的值会为“\\”,因此还需要进行处理 //string server = this.Context.Parameters["server"]; //string uid = this.Context.Parameters["user"]; //string pwd = this.Context.Parameters["pwd"]; //这个变量是程序的安装路径 string path = this.Context.Parameters["targetdir"]); base.Install(stateSaver); //调用自己的安装方法,cmd命令,服务操作,文件操作…… DoSomething(); }
⑦重新回到Visual Studio Installer项目,右击-视图-自定义操作,在“安装”文件夹上右击-添加自定义操作,选择生成类库dll所存放的路径——选择“添加输出”——选择刚才的类库项目——选择“主输出”——OK——打开该项属性,对CustomActionData进行编辑,如此便可实现自定义页面与安装程序类之间的变量传递。此处定义的是传递安装目录,还可以加入前面定义的那几个变量,代码如下:
/server=[SERVER] /user=[USER] /pwd=[PWD]
⑧至此,就基本完成了自定义安装功能了。
4、自定义卸载操作
基本方法与上同,只不过不知道卸载界面如果自定义...因此忽略①②③
④同
⑤同
⑥重写Uninstall方法
public override void Uninstall(System.Collections.IDictionary stateSaver) { base.Uninstall(stateSaver); DoSomething(); }
⑦前面基本相同,不同的是将自定义操作加到“卸载”文件夹下
⑧至此,就基本完成了自定义卸载功能了。
5、更多的自定义操作
查了一下Installer,还可以重写以下方法
2.0
4.0
更多信息:http://msdn.microsoft.com/zh-cn/library/system.configuration.install.installer.onbeforeinstall(v=vs.100).aspx