第二篇C# ActiveX控件安装部署

第二篇C# ActiveX控件安装部署
第二篇C# ActiveX控件安装部署

1.制作ActiveX安装项目

(1). 新建一个安装项目ActiveXDemo.Setup

(2). 在ActiveXDemo.Setup项目上点右键,【添加】->【项目输出】,选择上边的ActiveXdemo项目

(3). 右键ActiveXDemo.Setup项目打开属性页面,设置安装URL

这里设置为:http://localhost/Install

这个目录必须是实际存在的,用来存放生成的安装文件,供客户端下载安装。

(4).在建立的主输出来自ActiveXDemo上右键属性,将Register这一项一定要设成“vsdrpCOM”。

(5)在“检测到的依赖项”中双击“Microsoft .NET Framework”,然后在“启动条件”的.Net Framework 上右键属性这里可以调整安装包的framework版本。

(6) 在安装项目ActiveXDemo.Setup右键属性的“系统必备”中,可以指定环境必须的framework版本。这些如果你是仅需要低版本要求时,是需要更改的,否则可能到目标主机上部署时会遇到莫名其妙的问题。

(7)另外,如果我们是使用msi的方式部署控件,这样就会有一个控件的安装过程(可以静默),所以你可以指定安装包的版本,用于以后自动升级;可以制作卸载程序,用于手动卸载等等,看各位的需求了,简单贴上来一个制作卸载的过程,此步可以省略。

1) 拷贝文件C:\Windows\System32\msiexec.exe文件,修改文件名为Uninstall.exe,添加到安装项目中,然后双击Unistall.exe打开“文件系统”属性,右键Unistall.exe创建一个快捷方式,将快捷方式重命名为“御载”。

2) 在卸载控件上点击右键-> 属性,设置Arguments,就是指定要卸载的程序

Arguments后面的一串字符串代码是安装项目的ProductCode代码,可以这样获得:选中ActiveXDemo.Setup安装项目,按Ctrl+w+p键调出属性窗口,productCode属性的代码就是了

到此,ActiveX控件安装包前期工作基本已经准备完成,但是如果要让ActiveX可以自动升级的话,还要作相应调整。

2.ActiveX控件自动升级

ActiveX升级需要更新cab安装包的调用版本和AcitiveXDemo.Setup安装项目的版本。

cab的调用版本 (即html里codebase的版本)是会和客户机注册表信息进行配对,

HKEY_CLASSES_ROOT/CLSID/{GUID}/InstalledVersion/(Default)= "version"

HKEY_CURRENT_USER/Software/Classes/{GUID}/InstalledVersion/(Default)= "version"

也就是说,我们需要在安装msi的時候,在客户机注册表里写进这条注册表信息

方法如下︰

选中ActiveXDemo.Setup安装项目 -> 右键–> 视图–> 注册表,然后会打开注册表配置窗口:

注册表配置规则如下,例如:

请以ActiveX控件的GUID代替以下的GUID,并保留Guid外面的大括号{}

注册表写法:

HKEY_CLASSES_ROOT/CLSID/{DF0769A5-99D3-4BE0-90B8-91C65A92118C}/InstalledVersion/(Default) = "1,0,0,1"

Html写法:

在安装完cab包的時候,注册信息便会被写进客户端的机器,这样客户在浏览你网页的时候,便会把html 里codebase的版本和注册表里的版本进行配对检查,如html的版本较注册表的版本新,便会下载并安装cab安装包。

第二点是AcitiveXDemo.Setup安装项目的版本

选中ActiveXDemo.Setup安装项目–> 右键 -> 属性–> Version,这个版本要比客户注册表的版本要新,否则在执行cab安装包时便会安装失败。另外,还要把RemovePreviousVersions(移除前一版本)设置为true。

这么设置的两个目的︰

1. html会和客户机注册表的版本进行配对,发现html的版本较客户机注册表里的版本新时,便会下载cab包。

2. 下载cab包后,便会根据inf执行msi 或bat文件,执行msi时,它会自动和上一次安装的msi版本比较,下载的版本较新时,才会继续安装。

3.生成安装文件

1).重新生成ActiveXDemo.Setup项目,会生成两个文件,一个setup.exe文件和一个

ActiveXDemo.Setup.msi文件。

2). 新建一个网站,添加如下代码到网页中。

其中classid即为控件的Guid。

codebase="Install/setup.exe">

(6). 将安装项目生成的exe和msi文件拷贝到网站Install目录中。

ActiveXDemo.Setup.msi

setup.exe

(7).启动网站,确保访问setup.exe的目录与【安装项目】中的【安装URL】一致。

(8).如果客户端装了Framework的情况下,网页会弹出提示,是否安装ActiveX控件,如果提示了也不能安装,需要将网站添加到信任站点,并允许下载不安全和未签名控件。关于控件的签名和认证,本作者水平有限不做说明,需要的请自行搜索。

使用这种安装方法,会在客户端弹出安装软件的界面,对客户来说,不太友好。真正发布到网站上的时候需要制作ActiveX Cab安装包

4.制作ActiveX CAB安装包

1). 先去微软下载cabsdk.exe(下载地址:https://www.360docs.net/doc/c413119325.html,/kb/310618),解压后我们需要里面的CABARC.EXE工具;或下载makeCAB工具包,里面有所需要的工具文件。

2). 然后需要编写两个文件,cab安装配置文件install.inf和一个批处理文件run.bat;

Install.inf内容如下:

[version]

signature="$CHICAGO$"

AdvancedINF=2.0

[Setup Hooks]

HOOKRUN1=HOOKRUN1

[Deployment]

InstallScope=user

[HOOKRUN1]

run=%EXTRACT_DIR%\run.bat

3). 编写run.bat文件,内容如下:

set CURDIR=%cd%

msiexec.exe /i "%CURDIR%\ActiveXDemo.Setup.msi" /qn

4). 现在需要将ActiveXDemo.Setup.msi,install.inf,runbat 这3个文件打包成cab,假设三个文件和

CABARC.EXE已经放在同一个目录中,进入cmd,输入

F:\Projects\ActiveXDemo CABARC.exe N F:\Projects\ActiveXDemo\ActiveXDemo.cab

F:\Projects\ActiveXDemo\ActiveXDemo.Setup.msi F:\Projects\ActiveXDemo\install.inf

F:\Projects\ActiveXDemo\run.bat

5.调试

将测试页面的ActiveX调用代码改成:

codebase="Install/ActiveXDemo.cab#version=1,0,0,1">

codebase="Install/ActiveXDemo.cab#version=1,0,0,1",里面的#version=1,0,0,1就是要更新的版本。

相关主题
相关文档
最新文档