原文:
Advanced Installer 制作.NetWeb部署安装包
因为是.Net的Web应用程序,所以想用Advanced Installer 调用Dll实现安装部署。
因为我需要自己定制参数,包括数据库服务器和数据库名称等,我需要建立一个企业版的项目工程。
建立完毕,产品参数设置好了之后,就转到【用户界面】-》【对话框】。
在【首次安装】目录下新建一个对话框:

【图1.1】
编辑对话框,如【图1.1】,我在这里将数据库服务器文本框属性名设置为:DBSERVERNAME 如【图1.2】
【图1.2】
我们就可以将属性名称作为参数标识。各个文本框属性名称设置好,我找到【工程细节】-》【自定义操作】
在【安装执行顺序】里面有一个节点【Install】,右击【Install】,选择【添加预定义自定义操作】下的【.Net Installer类操作】
【.Net Installer类操作】DLL的制作将稍后介绍。
【图1.3】
我看见如【图1.4】的默认设置。
【图1.4】
其中“操作数据”是重点!!这些数据将被dotNetCusAct.dll调用。
单击“操作数据”后面的小按钮,弹出【编辑.Net自定义操作】对话框
【图1.5】
Installer类参数的设置是重点,设置错误,将无法安装。
如”target-》[APPDIR]\“ 这个斜杠是必须的,[APPDIR]是安装路径属性名,我前面提到的属性名称在这里就能排上用场了。
如“DbServerName-》[DBSERVERNAME]”普通的属性不加“\”!
在.Net类库中可以用语句“Context.Parameters["DbServerName"]“来获取参数值。
【.Net Installer类操作】DLL的制作
至此,安装设置就完成了。下面的工作就交给.Net。
在VS中建立动态库,在项目在添加【安装程序类】见如下代码:
using
System.Collections;
using
System.ComponentModel;
using
System.Configuration.Install;
namespace
WebSetupLibrary
{
[RunInstaller(
true
)]
public
partial
class
MyInstaller : Installer
{
public
MyInstaller()
{
InitializeComponent();
}
#region
Install 安装
public
override
void
Install(IDictionary stateSaver)
{
base
.Install(stateSaver);
Parameters paramters
=
new
Parameters() {
DbServer
=
this
.Context.Parameters[
"
DbServer
"
].ToString(),
DbName
=
this
.Context.Parameters[
"
DbName
"
].ToString(),
IISWebName
=
this
.Context.Parameters[
"
iisWebName
"
].ToString(),
User
=
this
.Context.Parameters[
"
UserName
"
].ToString(),
Pwd
=
this
.Context.Parameters[
"
Password
"
].ToString(),
Port
=
this
.Context.Parameters[
"
Port
"
].ToString(),
Target
=
this
.Context.Parameters[
"
target
"
].ToString(),
ValidateOption
=
this
.Context.Parameters[
"
ValidateOption
"
].ToString(),
Videolivedir
=
this
.Context.Parameters[
"
VideoLiveDir
"
].ToString()
};
Operators o
=
new
Operators();
o.RegisterParamers(paramters);
o.FlashMediaServerSetting();
o.DataBaseSetting();
o.WebSiteSetting();
o.RegistryKeySetting();
}
#endregion
}
}
有两个是必须的:
1. [RunInstaller(true)]的值必须为true
2.必须继承Installer类,重写Install方法
我这里只是做了安装过程, 所以只是重写了Install方法,如要UnInstall,就可以重新UnInstall方法。