分享3:
需求:对已经开发的应用程序进行安装封装操作,即创建安装、卸载部署程序;
分析:程序的开发是为了在不同的人在不同的机器上使用,为了使不同机器使用该软件就需要见程序安装包,并且保证安装包中必须包含此软件运行所需的运行环境;
具体操作:
1.在VS2010中新建项目,选择:其他项目类型->安装与部署->安装向导,然后确定;
2.界面默认出现文件系统,分左右两侧;在右侧中点击应用程序文件夹后,右键选择添加文件,将需要打包的执行文件以及相关的组件类库等添加进行;
3.右击左边的“应用程序文件夹”打开属性对话框,将属性中的“defaultlocation”的路径中的“[manufacture]”去掉(不然安装程序默认目录就是c:\programm file\你的用户名\安装解决方案名称)
4.对执行程序增加快捷方式,选中执行程序,右键选择生成快捷方式,可以进行重命名,并将其剪切到左侧的“用户的“程序”菜单”或用户桌面(这样在安装完成后,快捷方式就会在菜单或桌面出现)
5.(重要环节)选择项目名称右键,选择属性;在属性页中,选择“系统必备”,将勾选“创建用于安装系统必备组件的安装程序”;在复选框中选择你必备组件;勾选“从与我的应用程序相同的位置下载系统必备组件”(重要一点:勾选”从与我的应用程序相同的位置下载系统必备组件(D)”,其实意思就是说你勾选后,生成安装项目时,在你安装项目的路径下,会有你在系统必备组件列表中勾选的组件.(系统自动完成,这一点还不错,不需要你自己去下载组件))
到此,基本完成制作,点击“生成->生成解决方案”,即可在Debug中找到setup.exe或者“项目名称.msi”
6.关于“创建卸载功能”,有两种方式如下:
方法一:
A.在添加应用程序时,需要添加一个msiexec.exe(可以重命名为Uninstall.exe),同执行程序一样(这个文件在c:\window\system32文件夹下);
B.(重要环节)选中msiexec.exe,需要给该执行程序设置Aguement属性值输入“/x {ProductCode}”(/x与{ProductCode}间有空格),ProductCode值在项目属性中可以找到(即为该安装程序的注册表号)
这个卸载程序有一个缺点:当制作的安装包电脑系统如果是64位的话,那么如果安装程序完成后,在32位电脑上这个卸载功能的话,就行不通(因为msiexec.exe是64位的)。为解决这个问题,唯有自己创建一个应用程序,直接调用系统中的msiexec.exe。
方法二:
新建一个控制台程序,在Main方法中添加如下代码:string sysroot = System.Environment.SystemDirectory;System.Diagnostics.Process.Start(sysroot+“\\msiexec.exe“,“/x {ProductCode(此值在安装程序项目属性中取得) } /qr”);
点击生成,在bin文件夹中得到.exe文件,将其加入到安装程序项目中的“应用程序中去”(后面操作一样了)。这样就可以直接调用电脑系统中的msiexec.exe程序了。
至此,基本完成安装程序,至于其他设置,可以在属性中设置相关的参数,也可以在视图中自定义安装界面等等。