1.新建安装部署项目
打开安装向导,点击下一步,或者直接点击完成.当文件比较大时,注意把工程放在空间充足的磁盘分区上。
2.具体制作过程
2.1 添加文件夹与程序文件
安装向导完成后即可进入项目文件夹。
双击”应用程序文件夹”,在右边的空白处右击,选择添加->文件,将最终部署应用程序的可执行文件和相应的类库和组件添加进来.
右击项目名称,选择视图->文件系统,在“应用程序文件夹”中建立要安装的应用程序所需的文件夹,并添加对应的文件和程序集文件,这些必须和你的程序所需的文件夹和文件一致。
如果希望文件夹为空时仍创建此文件夹,则此时对应的AlwaysCreate应定为 true。
应用程序文件夹中的文件可以不用按照文件程序集一一添加,可以直接拷贝复制到应用程序文件夹内即可。如果希望有些文件在卸载源程序时不会自动删除,请将Permanent设为true,即可。
2.2制作快捷方式
右击主程序可执行文件,创建快捷方式,然后把快捷方式分别剪切或复制到左边的”用户的’程序’菜单”和”用户桌面”中.这样安装程序安装完成后会在 ”开始->所有程序”和”桌面”上生成程序的快捷方式,如果需要它们单独放在开始程序组的一个子文件夹下,则需要另组文件夹。注意:为了建立程序组文件夹,需要在 “用户的程序菜单”下建立对应名称的文件夹。可以把帮助文档放到程序组子文件夹,如果是快捷方式,需要指定目标。注意指定对应的icon,不然生成的快捷方式的图标不会对应。
在“用户的程序菜单”中可以将程序的对应的快捷方式放入其中,同理,用户桌面也可放入快捷方式。
2.3注册文件
如果需要注册文件,可以在注册表编辑器中操作。要注册.dll文件,请将其属性Register设置为:vsdrfComSelfReg,即可注册成功。
2.4设置安装程序的部署项目属性
对安装目录名称右击 ”应用程序文件夹”打开属性对话框:
将属性中的”defaultlocation”的路径中的”[manufacturer]“去掉,否则制作的安装程序默认安装目录会是”c:\programm file\你的用户名\安装解决方案名称”;设置安装程序的部署项目属性(右键解决方案中的项目名称),如下:
Author: 软件开发者,Manufacturer:软件开发公司 ProductName:产品名称
在”属性”面板中将会出现”Setup1部署项目属性”设置。如下表所示:
属 性 |
属 性 值 |
Author |
软件作者姓名 |
Manufactureer |
我的公司 |
ProductName |
重复文件清除器 |
Title |
欢迎安装重复文件清除器 |
2.5指定系统必备
打开解决方案管理器,右击解决方案名称,选择属性,在打开的属性页中,选择”系统必备”,
上图中的“包文件”,当应用程序文件夹中包含大文件时,要选择“以松散的未压缩文件的形式“。
在打开的系统必备页中,选中如下中的选择项,这个很重要。
选上以后,在生成的安装文件包中包含.netframework组件.(这个选项默认是没有选中的)
并设置成“从与我应用程序相同的位置下载系统必备组件“。这样就可将.Net框架集成到安装程序中了。
关于必备条件
Windows Installer(2.0、3.1)
这些包安装 Microsoft Windows Installer 可再发行版本 2.0 或 3.1,以便允许安装 Windows Installer 安装项目。在 Windows 2000 SP2 和更高的版本上预安装了此程序包。
.NET Framework 2.0
此程序包安装适用于 32 位平台 (x86) 的 .NET Framework。任何操作系统上都没有预安装该程序包,所有针对 x86 平台显式编译的 Visual Basic、Visual C# 和 Visual J# 项目都需要它。默认情况下此项处于选定状态。有关更多信息,请参见 再发行 .NET Framework。它已包括windows installer 2.0
.NET Framework 2.0(所有平台:x86、x64、IA64)
此程序包安装适用于(x86、x64、IA64)的 .NET Framework。任何操作系统上都没有预安装该程序包,针对任何 CPU 结构所编译的并且期望能够在所有平台(x86、x64、IA64)上运行的所有 Visual Basic、Visual C# 和 Visual J# 项目都需要它。注意,默认情况下 Visual Basic 和 Visual C# 项目是针对所有 CPU 结构编译的。如果选择此项,请清除用于 32 位平台版本的复选框。
2.6.设置安装程序的启动条件
如果要设置安装程序的启动条件,可以在启动条件编辑器(工具栏中最后一个图标即是)中设置。如下:
1).Net FrameWork 的检测,最简单的方法就是设置系统必备条件,将系统必备中,勾选 .Net FrameWork 2.0 ,并勾选创建用于安装程序系统必备的安装程序复选框,并设置成“从与我应用程序相同的位置下载系统必备组件“。这样就可将.Net框架集成到安装程序中 了。
2)如何检测用户机器中是否安装了SQl Server数据库。
先添加一个名为MSSQLSERVER的注册表搜索条件,设置属性如下:
Property:MSSQLSERVER
RegKey:SOFTWARE\Microsoft\MSSQLServer\Setup
Root:vsdrrHKLM(默认值)
Value:SQLPath
然后,建立一个名为MSSQLSERVER的启动条件,并设置属性为:
Condition:MSSQLServer
InstrallUrl:设置为空
Message:系统检测到您机器上没有SQL Server 2000,请先安装!
在”文件系统编辑器”中就做这些工作。单击”解决方案管理器”中的”启动条件编辑器”切换到启动条件编辑器中, 如果应用程序的安装有先决条件,比如要求对方必须先安装.NET Framework 2.0,那么就需要检测用户的计算机来判断对方是否已经按照要求安装了必要的组件。如果没有安装,就需要对用户进行提示。在”启动条件编辑器”中通过使用 鼠标右键单击”搜索目标计算机”文件夹,可以创建搜索来在安装前执行对特定位置的搜索。
Visual Studio的安装向导已经创建了一个启动条件,即.NET Framework。单击”启动条件”下的”.NET Framework”节点,可以在右侧的属性面板中查看它的属性,如图2-81所示。
如果在安装过程中安装程序判断对方没有安装.NET Framework 2.0.50727版本,那么它就会使用”Message”中的内容来提示用户。同时它会导向”InstallUrl”属性中的位置,让用户下载安装。在 这里可以修改”Message”属性和”InstallUrl”属性,比如把”InstallUrl”属性修改为应用程序安装光盘中的一个实际路径。
2.7设计安装界面
在用户界面编辑器中设置,如,添加许可协议,可以设置许可协议的对话框的LiceseFile,属性可以设置协议文件名(.rtf)。
可添加启动画面,指定splashbitmap.
2.8.”卸载”功能的添加
在vs.net2005下并没有直接生成卸载程序的功能,可用msi来实现了,
1).添加你的应用程序项目的时候,多添加一个msiexec.exe进去,
这个文件在c:\windows\system32文件夹下,
添加进去以后,为了让它更像个卸载程序,把他的名字改成”Uninstall.exe”,
然后创建一个快捷方式,放到桌面或者”开始-程序”中,
2)查找productcode
放在开始菜单中,然后查找这个部署项目的ProductCode,鼠标左键单击项目名称,是左键单击,然后点击属性标签,注意:不是右击的属性, ,这时你就可以看到ProductCode,
3)删除程序属性设置:
打开你创建的那个快捷方式的属性对话框,在Aguements属性中输入”/x {ProductCode}”,
然后点击”生成解决方案”即可生成带有卸载功能的安装程序了.
2.9自定义动作
如果有自定义操作,就在自定义编辑器操作。
例如,选择”Install”文件夹,右键”Add Custom Action”,把MWI.exe和MWIBG.exe添加进来;然后选择“Uninstall”文件夹把MWI.exe和MWIBG.exe也添加进来。
2.10.制作完成
右键解决方案,生成或重新生成,等候一段时间,可能比较长。之后打开解决方案文件夹下的debug或release文件夹,就可以看到生成的安装文件。
3.生成的setup.exe与setup.msi的区别
setup.exe里边包含了对安装程序的一些条件的检测,比如需要.net的版本是否安装等,当条件具备后,setup.exe接着调用setup.msi,而setup.msi则可以直接运行,如果你确定条件都具备的情况下。
4.一些问题
1) *.dll注册失败:
在编译完后,到目标系统上安装,总提示MWIToolkit.dll注册失败,错误HRESULT-2147010895。
在目标系统上使用regsvr32.exe MWIToolkit.dll注册依然失败,提示:
”LoadLibrary(“MWIToolkit.dll”)失败-由于依你公用配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”
但已把依赖的vcredist_x86.exe安装上了。利用depends.exe终于找到原因,MWIToolkit.dll编译时选择的编译模式是debug。这么以来,它依赖的dll文件有
c:\windows\winsxs\x86_microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\MSVCR80D.DLL
而vcredist_x86.exe安装的vc++运行库形式是:
%WINDIR%\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\MSVCR80D.DLL
即没有debug的。重新编译MWIToolkit.dll为release,再重新制作安装程序包,就没有问题了。
2)如何把配置文件安装到系统目录里:
因为程序安装后的服务读取配置文件是从%WINDIR%\system32\目录下,而默认添加的MWIConfig.xml会安装到程序所在的目录中,显然不符合要求,选中”Application Folder”中的MWIConfig.xml,把其属性中的Targetname改为MWIConfig-Example.xml。
然后,选中”File System on Target Machine”新增加一个”System Folder”,把MWIConfig.xml文件添加进这个System Folder中,安装后,配置文件就在system32目录下了。
3)更新安装
VS.NET 2005中生成安装包时,保持ProductCode不变、修改Version或updatecode,便可实现升级功能,而且安装后控制面板的”添加/删除”列表中也不会再多出一列。选择RemovePreviousVersions为True的时候可以自动卸载上次安装的版本。修改productcode时,会忽略原有的版本。