如何使用 ** InstallShield X Express ** ** 部署 .Net WinForm ** ** 程序 **
题记:今天是忙了半年的系统发布测试使用的日子,故 写此文以示纪念
一、 关于 InstallShield X Express 的版本演变问题请参阅
http://blog.joycode.com/hopeq/archive/2004/07/26/28421.aspx
二、 InstallShield X Express for Visual Studio .NET 2003 为 .Net 提供了内在的支持。所有的操作均在 VS IDE 中完成,其效果与 InstallShield X Express (下文中将简称 IS )独立 IDE 的功能是等价的。文章使用独立的 IS IDE 为示例
三、 本文中您将了解到
(1) 如何添加自己的工程文件
(2) 如何添加相关的组件,如 MDAC
(3) 如何自定义操作,还给出常用的注册操作示例。
(4) 如何发布 DotNetFrameWork
四、 我们开始

这就是 IS 的主界面
1. 单击 File à New 新建一项工程,出来下图

图 2 新建工程
按道理来讲,我们要发布 C# 程序,本应选择 C#.Net Wizard 项,可选这项后,在后面的向导中居然要你选择一 C #工程,并自动用 VS 打开(不解其意),好,题话回来。请按图 2 的设置,选择 Express Project ,输入工程名,保存路径,注意的地方是 Project Language ,默认是英语,如果你的工程里有中文信息的话(比如公司名称用中文)请一定要选择 Chinese(simplified) ,切记,不然是乱码。单击 OK
出现了图 3

图 3
请注意主窗体上方多了 Proejct Assistant , Installtion Designer ,现在的界面就是前者,其操作相当于图形操作了,操作流程就在图 3 的下方,单击 Application Information ,
出现图 4
 图 4
这地方很简单,写上你的公司名称,应用程序的名称,即安装程序的名称。还有版本号,以及你公司的主页,下面是否自动通知用户有更新,下面是选择添加、删除时的要显示的图标。这些不太重要,我们再单击, Installation Requirements ,是指程序安装时的系统需求,上面选择操作系统,下面选择组件,因为我们需要 MDAC ,所以选择 MDAC Version 2.7 。
单击 Installation Architecture ,这里默认即可。
再单击 Applicatin Files, 这里是添加自己文件的地方,请看下图

图 5
在图 5 的左边是,是目标电脑(即安装者的电脑)的路径,一般我们在 Program files 目录下,当然你也可以更改 ” My Product Name[INSTLLDIR]” 以及 My Company Name 目录,不过,它这里也合理了,先公司,在公司的产品名称。
好,现在你可以按右边的 Add Files 和 Add Folders 里,我们先添加文件,选择指定要发布的文件后,会出来一个提示框,要你是否寻找依赖文件,这时你选择 yes to all ,这里的话,如果你 .net 文件包含其他组件,打包的时候它将自动包含组件了。
同理,目录也是同样的方法。
单击 Application Shortcuts ,出现下图

图 6
如果要在桌面创建快捷方式,请先选定文件,再单击 create shortcut on desktop.
下面是一扩展多个图标,即在属性里你可以选择不同的图标。
单击 Application Registry ,相关的注册表操作,如图 7

图 7
选择 yes ,现在可以用注册表编辑了,你可以添加一些静态项的数据了,当然如果要在注册表里写上用户安装的路径怎么办? 别急,在后头介绍:)
单击 Installation Interview ,出现图 8
安装时,用户能否修改安装路径
安装结束后,是否直接启动程序
安装时,用户能否修改安装路径
自己的许可文件

图 8
具体的说明,我已经用图标标出了。
再单击 Build Installation ,选择 Single Executable 。即最后打包成一个执行文件。
讲了这么下面的步骤才是最关键的,转到 Installation Designer 方式

图 9
如图选中 MDAC 2.7 ,如果目标没有安装的话,安装程序将在自动安装。
好的,现在我们才自定义操作,呵呵,可以自由操作了
单击左边的 Define Setup Requirements and Actions- à Custom Actions-
这里的罗列的安装过程的全部顺序,你可以想插入到哪个步骤都可以,我们选择在文件复制到对方的目标电脑后再操作,在 After file Transfer 项,右键 New Exe,
在右边的 Source Location 里选择 File Exists on Target Computer ,然后再 File Location 里选目录。最重要的是下面,我们如何把用户选择的路径写到注册表里呢?
在 File Name and Command ,选择文件名 后面加参数 , 比如写注册表的程序叫 Reg.exe. 那我们在 FileName and Command Line 里如何填呢 ?
Reg.exe [INSTALLDIR]
好的,这样就可以把安装路径传给 Reg.exe 了,还有一点很重要就是 Reg.exe 里如何组织接收这个参数呢?
请看下面的代码
static void Main(string[] args)
{
//目录后已带\
string path=string.Empty;
foreach(string arg in args) {
path+=arg;
}
path=path.Trim();
if(path.Length ==0) {
return ;
}
SoftInitRegister(path); //开始注册
}
上面的代码有问题吗? 呵呵,有问题。如何修改? 简单,把
path+=args; 改成 path+=args+” “;
呵呵,很简单,自己注意一下。一些注册操作方法,这是我系统的注册方法,呵呵,漏了:)
public static void SoftInitRegister(string InstallPath) {
string ApplicationExec=InstallPath+"CEIM.EXE";//主应用程序
string ApplicationExec_Acc e= 4+"CEIM.EXE %1";//主应用程序+附件执行
//写软件安装的地方
RegistryKey regkey = Registry.CurrentUser;
RegistryKey writekey=regkey.CreateSubKey(@"Software\CEIM");
writekey.SetValue("AppBasePath",InstallPath);
//让CEIM随windows开启时自动加载
regkey = Registry.LocalMachine;
writekey=regkey.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
writekey.SetValue("CEIM",ApplicationExec);
//写右菜单---文件关联
regkey = Registry.ClassesRoot ;
writekey=regkey.CreateSubKey(@"*\Shell\CEIM\command");
writekey.SetValue("",ApplicationExec_Acce);//第一个参数对应注册表的"默认"
//写右菜单---目录关联
writekey=regkey.CreateSubKey(@"Folder\shell\CEIM\command");
writekey.SetValue("",ApplicationExec_Acce);//第一个参数对应注册表的"默认"
}
OK ,我们也应该到最后一步了,慢着,你还没有讲如何发布 dotnetFramework 呢?
刚才在叫你选 MDAC 2.7 的组件时,不是有很多的组件让你选择吗? 我找不到啊? 呵呵,对了,那里确实没有,怎么办? 看下面

图 10
我说一下操作路径您就明白了
Prepare for Release---- à Build Your Release---- 接着把设置按图 10 设置即可
OK 了,按菜单 build- à build singleimage ,大功告成!
说实在,这是我第一次写教程(雅称),今天也高兴,上次的那感想说,要写点东西的,迟迟没写,这算是补上了,写东西还真花时间,都快 3 个小时多了。不过能与大家分享自己的体会是最快乐的。
登峰
<?xml:namespace prefix = st1 ns = "urn:schemas-micro