winfrom打包详解

来源:互联网 发布:算法工程师笔试题目 编辑:程序博客网 时间:2024/06/05 10:14

        C#的c/s的winform,数据库为access。

        打包要求: 
                      (1)自动检测是否安装donet环境,如没安装,则提示自动安装。
                      (2)安装时自动安装数据库。

                      (3)在安装界面上能自定义一些安装图片或提示。 
 安装项目:
六个子项:文件系统、注册表、文件类型、用户界面、自定义操作、启动条件。
其中我们在打包过程中经常要用到的有文件系统、注册表、用户界面和自定义操作。
文件系统:向应用程序文件夹、用户的程序菜单、用户桌面下输出项目文件(四种类型:文件夹、项目输出、文件和程序集),还可以创建快捷方式(一般是放在桌面或程序菜单中)文件系统编辑器表示目标计算机上的文件系统,使用该工具可以指定应用程序文件安装的位置。在大多数情况下,希望将应用程序文件放在Application   Folder中或在Application   Folder下创建的子文件夹中。安装在目标计算机上以后,来自Application   Folder的文件将位于Program   Files/Manufacturer/ProductName文件夹中,其中   Manufacturer   是安装Visual   Studio 时使用的公司名,而ProductName是用于部署项目的名称。可以在安装项目的属性窗口中重写这两个设置。
注册表:可以向注册表中插入键,在安装应用程序的同时创建注册表项。
用户界面:系统自动提供一组在安装期间显示的默认对话框。根据正在构建的项目的类型,所提供的这组对话框有所不同。使用用户界面编辑器,可以将对话框重新排序或删除对话框。在编辑器中显示的对话框树包含两部分:安装与管理员安装。安装部分包括终端用户运行安装程序时显示的对话框,而管理员安装部分包含系统管理员将安装程序上传到某个网络位置时显示的对话框。如果想构建一个没有用户界面的安装,只需在对话框树上删除安装部分中的所有对话框。或者,可以从一组可用的模板将对话框添加到安装项目中。
启动条件:使用启动条件编辑器来定义成功运行安装所必须满足的条件。例如,可以检查特定版本的操作系统。如果用户尝试在一个不满足条件的系统上安装,安装将中止。还可以配置启动条件来搜索目标计算机上的某个特定文件、注册表项或组件。在开始安装时,Windows   Installer   执行搜索和条件评估,并按启动条件编辑器中所示的顺序执行。
自定义操作:自定义操作提供了一种在安装结束时执行任务的机制。例如,您可能希望在安装应用程序之前先配置好数据库,此时您可以用自定义操作来完成数据库的创建。自定义操作构建为单独的   .dll   或   .exe   文件,然后使用自定义操作编辑器添加到项目中,其中这些操作与不同的安装阶段有关。自定义操作编辑器包括几个单独的文件夹,用于放置执行   Install、Commit、Rollback或Uninstall 任务的二进制文件。
InstallerClass属性:如果添加的自定义操作是继承自Installer类(注意放在哪个文件夹下就要重载哪个相应的方法),该属性设为True,否则该属性设为False(注意:为False时要指定.dll文件的入口——EntryPoint属性)。
卸载:可以在安装应用程序中提供一个卸载的快捷方式,借助于系统提供的卸载程序msiexec.exe(在c:/windows/system32目录下),并把安装程序项目的ProductCode属性值赋给快捷方式的Arguments属性(注意:在属性值前加/x)
安装程序类:System.Configuration.Install命名空间下
Installer类有四个可以重载的方法,分别是Install,Commit,Rollback,Uninstall。
分别对应于自定义操作中的四个文件夹:安装、提交、回滚、卸载。
数据库安装:
1、 附加数据库
2、 执行创建数据库的Sql语句
3、 完全备份的数据库文件还原
可以将能生成数据库的的文件(分离的数据库文件、Sql脚本文件或完全备份文件)部署到应用程序文件夹下,然后在重载的Install方法里加入生成数据库代码(注意:生成数据库的代码应该在调用基类的Install方法后)。
数据库的卸载:首先删除数据库,再调用基类的Uninstall方法删除应用程序文件夹里的文件(顺序不能乱)。
几个特殊点:
1、 文件系统中的AlawaysCreate属性:本属性可以指定为False,然后Condition属性为空时相当于AlawaysCreate属性为True(Transitive属性必须为True才计算Condition属性的值)。Condition   属性可用于向安装程序添加条件逻辑,例如,仅为特定的操作系统版本安装某个文件。它还可以与文件搜索、注册表搜索或组件搜索一起使用,以在找不到指定项时使安装过程终止。可以是   Windows   Installer   条件或属性,Property   属性中包含的值,文件、注册表或组件搜索中的   Name   属性,也可以是使用逻辑运算符的上述语句的组合。
2、 创建快捷方式(在程序中创建,可以有作为附加任务,根据用户的选择情况,有选择的创建):
添加引用:COM   选项卡并选择   Windows   Script   Host   Object   Model
创建对象:创建一个   WshShell   的实例对象,接着通过该对象的   CreateShortcut   方法来创建   IWshShortcut   接口的实例对象,传递给   CreateShortcut   方法的参数是将要创建的快捷方式的完整路径(包括该快捷方式的名字)。
设置属性:TargetPath、WorkingDirectory、WindowStyle、Description、IconLocation
生成快捷方式:调用   IWshShortcut.Save   方法生成快捷方式文件。

实际操作案例:

一步:

1,解决方案—添加—新建项目—其他项目类型—安装和部署—安装项目,输入名称Setup,点“确定”

2,添加主输出:单击左侧“应用程序文件夹”,右侧右键—添加—项目输出-主输出-确定。

3,添加开始程序中的文件夹:右击左侧“用户的程序菜单”—添加—文件夹,自己设置名称。

4,添加开始程序中和桌面的主程序快捷方式:左侧单击刚新建的文件夹--右侧右键—创建新的快捷方式--选择“应用程序文件夹---主输出--“确定”    左侧单击用户桌面--右侧右键—创建新的快捷方式---应用程序文件夹---主输出---确定

5,设置程序图标:先把图标文件放到你的程序目录下---单击左侧“应用程序文件夹”,---空白处右键—添加—文件---图标文件。然后左侧“用户的程序菜单下”的文件夹---单击刚才新建的程序快捷方式---属性窗口---Icon—浏览—图标文件---确定。同理添加“用户桌面”里快捷方式的图标。

6,添加卸载功能:在c:/windows/system32文件夹下找到msiexec.exe文件,复制到程序目录下,然后按照图标的方法添加到“应用程序文件夹”中,然后像添加主程序快捷方式一样在开始程序中添加这个卸载的快捷方式,名字可以自己设置。然后在“解决方案管理器”中单击“Setup”,也就是你的安装项目,在属性窗口找到“ProductCode”,复制它后面的值,然后单击刚新建的卸载的快捷方式,属性中找到“Arguments”,在后面的框里输入“/x”再加上刚才复制的值就行了。

7,在Setup属性中可以自己设置“ProductName”和“Title”的内容;

8,修改安装默认路径:单击左侧“应用程序文件夹”,属性中“DefaultLocation”把中间的“[manufacturer]”删除,否则安装路径中会出现你自己的用户名。

9,添加系统必备:右击setup—属性—系统必备按钮,在“指定系统必备组件的安装位置”中选择“从与我的应用程序相同的位置下载系统必备组件”,确定。

10,生成安装项目:右击“Setup”—生成,稍等会儿,OK,大功告成了!然后到你的项目文件夹中可以看到“Setup”文件夹,在“Debug”下就可以看到安装文件了!

二步:
一、应用程序文件夹操作

1、新建一个安装项目,起名“测试打包”

这里要记住路径了,不然,打完了找不着安装包在哪里,可就说不过去了,呵呵!

2、这里就会出现三个文件夹,不用多说一看就明白意思,点“应用程序文件夹-->添加-->文件夹

这里的作用就是好管理,重启一下名字,这里我就叫它“测试打包系统”

3、在“测试打包系统”文件夹上右键-->添加-->项目输出

下一步:添加主输出

一般这个就够了,当然你还有别的资源的话就要添加上去了!

4、接下来在“应用程序文件夹”下依些建几个文件夹,我建了3个

 

Images里我放的是图片,2个ICO和1个BMP,后面会用到!

Unit放置卸载的文件,这里你记住有这么回事就行了,下面专门会讲这个文件是怎么来的!

最下面的一个就不用多说了,上面操作过了,放了一个主输出文件!

 

到这里一个简单的打包项目已完成了,呵呵,右键生成一下,在项目目录中找着安装文件就可以运行安装的用了!

但是这样的安装包,你安装完一不小心还找不着安装在哪里去了,呵,因为这样只有在安装文件夹里有东东,而我们所熟悉的开始菜单和桌面上没东西啊!不方便,那就给加上去吧!

二、开始菜单-->程序-->里添加内容操作

1、点“用户的“程序”菜单”,新建一个文件夹!步骤和前面一样,不细说!

 

 

我起名叫“测试打包系统”

2、在中间的桌口中(上图的名称下面部分位置啊),右键-->创建新的快捷方式,出现下面的界面

 

 

选择“应用程序文件夹”里面的,也就是我们添加的主输出文件!

 

3、更改新添加"快捷方式的属性"

看到了吧,这里我更改了一下name和Icon,更改Icon,看到上图中的浏览了吧,打着前面Images下面的ICO文件就可以了!

4、用上面同样的方式在建一个快捷方式,指向前面添加的Unit文件夹里的文件!同样改一下属性!

看到了吧,我里面有2个快捷方式!

 

这样就OK了!安装完后开始菜单中就会出现上面添加的两个快捷方式!

 

 

三、用户桌面添加内容的操作

1、在文件夹中间窗口中添加快捷方式,指向“应用程序文件夹”里的主输出,然后更改一下属性就OK了!

这样安装完成后桌面就会出现一个快速启动!

 

到这里一个安装和部署项目也就差不多了,但是吗,离完美还差的远呢,把我现在掌握的就先写出来吧

四、自定义用户界面

1、打开用户界面

2、这里可以设置已有窗体的属性和新增窗体

设置窗体属性

比如这里可以设置一下BannerBitmap,安装窗口上面的图片,方法和前面的ICO文件一样,浏览去找Images下面的Bmp文件即可!

就是这样的效果,哈哈,效果差了点啊!

可以根据需要来新增窗口,比如密码啊,等等

就是上面的这个窗口

五、卸载程序怎么打包上去?

我试了好几种方面都不太好使,可能是没理解!最后用了这一种方法,感觉还不错!

1、新建一个控制台程序

2、看代码

 

 

Code

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace UninStall

{

     class Program

     {

         static void Main(string[] args)

         {

             string sysroot = System.Environment.SystemDirectory;

             System.Diagnostics.Process.Start(sysroot + "//msiexec.exe", "/x {522B529D-8A62-432D-962F-D0CFF826775E} /qr");

         }

     }

}

 msiexec.exe在windows的system32文件夹下。

注意上面代码里的红字部分,这个就是你要打包的程序的安装与部署项目的ProductCode,那么这个ProductCode在哪里找呢?请记住,这里是两个系统,一个是你要打包的系统,另一个是控制台程序,所以啊,这点,要理解!去你要打包的项目里去找

 

 

看到了吧,就是它了!把它拷贝过来,放在控制台程序里生成一下,上面UNIT里所导入的文件就是现在生成的文件了!!

 

有时候程序的安装运行还需要某些软件、补丁,比如IE的版本要在5.0以上等,这时就需要添加启动条件。在“解决方案资源管理器”中选择“TestSetup”项目。在“视图”菜单上指向“编辑器”,然后单击“启动条件”。在“启动条件编辑器”中,选择“目标计算机上的要求”节点。在“操作”菜单上选择“添加文件启动条件”。此时,将在“搜索目标计算机”节点之下添加一个“搜索 File1”节点,在“启动条件”节点之下添加一个“Condition1”节点(condition :以…为条件)。将“搜索 File1”重命名为“搜索 Internet Explorer”。在“属性”窗口中,将“FileName”属性设置为 Iexplore.exe,将“Folder”属性设置为 [ProgramFilesFolder],将“Depth”属性设置为 2,将“MinVersion”属性设置为 5.00。选择“Condition1”节点。将“Message”属性设置为下面的内容为“此程序需要 Microsoft Internet Explorer 5.0 或更高版本。请安装 Internet Explorer 并重新运行 TestSetup。”

 

参考:http://blog.csdn.net/waitwarwolf/archive/2010/08/05/5791410.aspx

原创粉丝点击