ActiveXコントロールの開発とCABパッケージの作成
18550 ワード
一つのプロジェクトでActiveXコントロールを使うには、ネット上の多くの例を参照して、ActiveXコントロールは簡単にできます.それから1つの【インストールプロジェクト】をして、かえって使うことができて、ただクライアントで手動でインストールをクリックするだけで、次のステップ、次のステップ...とても爽やかではありません;また「CABプロジェクト」を試してみましたが、VS 2008でやる人はいないようで、工夫を凝らして、やっと解決策を見つけました.この経験を皆さんと共有します.開発ツール:Visual Studio 2008.NETバージョン:2.0開発言語:C#一、ActiveXコントロール1の作成、「Windowsフォームコントロールライブラリプロジェクト」の新規作成2、「ユーザーコントロール」の追加3、2つのLabelコントロールをインタフェースにドラッグ4、コントロールに前の時間を表示する方法を設定する
5、新しいインタフェースを作成する:インタフェースを実現する目的はプログラムの安全性を高めることであり、クライアントIEが設定を変更せずにActiveXコントロールを事前に実行できるようにする.この記事については、http://blog.csdn.net/optman/archive/2007/07/18/1698070.aspxをお勧めします.
6、私达のコントロールにこのインタフェースを実现させますこのインタフェースを実现することについて、长いです.この文章で见つけることができます:http://www.pinvoke.net/default.aspx/Interfaces/IObjectSafety.html7、私达のコントロールのためにGuid、ProgIdとComVisibleの属性を追加します
8、プロジェクト属性を開き、生成中に「Com相互運用登録」9をチェックし、プロジェクトを生成し、binReleaseディレクトリの下に入るとHelloBossmaが見える.dll HelloBossma.tlbという2つのファイルは必要です.そうしないと生成に成功しません.二、ActiveX Setupインストールファイル1を作成し、インストール項目2を新規作成し、項目を右クリックし、【追加】->「項目出力」、上の項目3を選択し、インストール項目のプロパティページを開き、インストールURLを設定ここでは以下のように設定する.http://localhost/hellobossmaこのディレクトリは、クライアントがダウンロードしてインストールするために生成されたインストールファイルを格納するために実際に存在する必要があります.4、プロジェクトを生成すると、2つのファイルが生成され、1つのexeファイルと1つのmsiファイル5が生成され、次のコードがWebページに追加されます.ここでclassidはコントロールのGuidです.
6、インストールプロジェクトで生成したexeとmsiファイルをウェブサイトhellobossmaディレクトリにコピーする. HelloBossmaSetup.msi setup.exe 7、サイトを起動し、setupにアクセスすることを確保する.exeのディレクトリは、【インストール項目】の【インストールURL】と一致しています.8、一般的には、ActiveXコントロールをインストールするかどうかなどのプロンプトが表示されます.プロンプトが表示されてもインストールできない場合は、信頼できるサイトにWebサイトを追加し、ダウンロードが安全でないコントロールと署名されていないコントロールを許可する必要があります.コントロールの署名と認証については、ここでは説明しません.必要なものは自分で検索してください.このインストール方法を使用すると、クライアントからインストールソフトウェアのインタフェースがポップアップされ、お客様にとってあまり友好的ではありません.三、ActiveX CABインストールパッケージを作成してVSの「CABプロジェクト」テンプレートを試したが、残念ながらコントロールがなかなかインストールできず、断念.CABARCを使っている人がネットでたくさん見かけました.EXE、やってみたら、意外にも成功して、特に過程を記録しました.1、このパッケージをダウンロードして、マイクロソフトからダウンロードすることができて、住所:http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/cabsdk.exeこのファイルを解凍して、中に詳しい使用説明があります.2、【開始】-【実行】、「CMD」と入力、開いたコマンドプロンプト画面で、解凍後のファイルのBINディレクトリに入ります.ここでは2つのファイル:HelloBossmaSetupを追加する必要があります.msi install.infHelloBossmaSetup.msiは、上のインストール項目で生成されたインストールプログラムです. install.infは、コントロールを実行するためにダウンロードまたは提出するファイルを指定するテキストファイルです.infファイルの書く規範については、ここでは紹介しないで、必要なものがあれば自分で探してもいいです.この例ではinfファイルの内容
この2つのファイルがあれば、下のコマンドを実行し、成功すれば現在のディレクトリでHelloBossmaを生成します.cabファイル.3、このファイルをコントロールのダウンロードディレクトリに入れ、Webページの呼び出し方法を変更します.
ここにはボタンも追加されており、クリックするとイベントがトリガーされ、コントロールの表示時間方法が呼び出され、ボタンをクリックすると、コントロール上の時間の変化がわかります.OK、この文章はここまでで本文は終わります.C#を使用してActiveXコントロールを開発することを簡単に理解するだけです
///
<summary>
///
///
</summary>
///
<param name="timeStr"></param>
public
void
SetTime(
string
timeStr)
{
this
.label2.Text
=
timeStr;
}
5、新しいインタフェースを作成する:インタフェースを実現する目的はプログラムの安全性を高めることであり、クライアントIEが設定を変更せずにActiveXコントロールを事前に実行できるようにする.この記事については、http://blog.csdn.net/optman/archive/2007/07/18/1698070.aspxをお勧めします.
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Runtime.InteropServices;
namespace
HelloBossma
{
[ComImport, GuidAttribute(
"
CB5BDC81-93C1-11CF-8F20-00805F2CD064
"
)]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
public
interface
IObjectSafety
{
[PreserveSig]
int
GetInterfaceSafetyOptions(
ref
Guid riid, [MarshalAs(UnmanagedType.U4)]
ref
int
pdwSupportedOptions, [MarshalAs(UnmanagedType.U4)]
ref
int
pdwEnabledOptions);
[PreserveSig()]
int
SetInterfaceSafetyOptions(
ref
Guid riid, [MarshalAs(UnmanagedType.U4)]
int
dwOptionSetMask, [MarshalAs(UnmanagedType.U4)]
int
dwEnabledOptions);
}
}
6、私达のコントロールにこのインタフェースを実现させますこのインタフェースを実现することについて、长いです.この文章で见つけることができます:http://www.pinvoke.net/default.aspx/Interfaces/IObjectSafety.html7、私达のコントロールのためにGuid、ProgIdとComVisibleの属性を追加します
namespace
HelloBossma
{
[Guid(
"
636B8CE1-7512-464C-B63C-FC75BDCA21DB
"
), ProgId(
"
HelloBossma.HelloBossmaActiveX
"
), ComVisible(
true
)]
public
partial
class
HelloBossmaActiveX : UserControl, IObjectSafety
{
...
}
}
8、プロジェクト属性を開き、生成中に「Com相互運用登録」9をチェックし、プロジェクトを生成し、binReleaseディレクトリの下に入るとHelloBossmaが見える.dll HelloBossma.tlbという2つのファイルは必要です.そうしないと生成に成功しません.二、ActiveX Setupインストールファイル1を作成し、インストール項目2を新規作成し、項目を右クリックし、【追加】->「項目出力」、上の項目3を選択し、インストール項目のプロパティページを開き、インストールURLを設定ここでは以下のように設定する.http://localhost/hellobossmaこのディレクトリは、クライアントがダウンロードしてインストールするために生成されたインストールファイルを格納するために実際に存在する必要があります.4、プロジェクトを生成すると、2つのファイルが生成され、1つのexeファイルと1つのmsiファイル5が生成され、次のコードがWebページに追加されます.ここでclassidはコントロールのGuidです.
<
object
classid
="clsid:636B8CE1-7512-464C-B63C-FC75BDCA21DB"
codebase
="hellobossma/setup.exe#version=1,0,0,0"
width
="200"
height
="40"
id
="helloBossma"
>
</
object
>
6、インストールプロジェクトで生成したexeとmsiファイルをウェブサイトhellobossmaディレクトリにコピーする. HelloBossmaSetup.msi setup.exe 7、サイトを起動し、setupにアクセスすることを確保する.exeのディレクトリは、【インストール項目】の【インストールURL】と一致しています.8、一般的には、ActiveXコントロールをインストールするかどうかなどのプロンプトが表示されます.プロンプトが表示されてもインストールできない場合は、信頼できるサイトにWebサイトを追加し、ダウンロードが安全でないコントロールと署名されていないコントロールを許可する必要があります.コントロールの署名と認証については、ここでは説明しません.必要なものは自分で検索してください.このインストール方法を使用すると、クライアントからインストールソフトウェアのインタフェースがポップアップされ、お客様にとってあまり友好的ではありません.三、ActiveX CABインストールパッケージを作成してVSの「CABプロジェクト」テンプレートを試したが、残念ながらコントロールがなかなかインストールできず、断念.CABARCを使っている人がネットでたくさん見かけました.EXE、やってみたら、意外にも成功して、特に過程を記録しました.1、このパッケージをダウンロードして、マイクロソフトからダウンロードすることができて、住所:http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/cabsdk.exeこのファイルを解凍して、中に詳しい使用説明があります.2、【開始】-【実行】、「CMD」と入力、開いたコマンドプロンプト画面で、解凍後のファイルのBINディレクトリに入ります.ここでは2つのファイル:HelloBossmaSetupを追加する必要があります.msi install.infHelloBossmaSetup.msiは、上のインストール項目で生成されたインストールプログラムです. install.infは、コントロールを実行するためにダウンロードまたは提出するファイルを指定するテキストファイルです.infファイルの書く規範については、ここでは紹介しないで、必要なものがあれば自分で探してもいいです.この例ではinfファイルの内容
[
version
]
signature
=
"
$CHICAGO$
"
AdvancedINF
=
2.0
[
Setup Hooks
]
hook1
=
hook1
[
hook1
]
run
=
msiexec.exe /i
"
%EXTRACT_DIR%\HelloBossmaSetup.msi
"
/qn
この2つのファイルがあれば、下のコマンドを実行し、成功すれば現在のディレクトリでHelloBossmaを生成します.cabファイル.3、このファイルをコントロールのダウンロードディレクトリに入れ、Webページの呼び出し方法を変更します.
<
object
classid
="clsid:636B8CE1-7512-464C-B63C-FC75BDCA21DB"
codebase
="hellobossma/HelloBossma.CAB"
width
="442"
height
="49"
id
="helloBossma"
>
</
object
>
<
input
type
="button"
value
="Click"
onclick
="helloBossma.SetTime((new Date()).getTime())"
/>
ここにはボタンも追加されており、クリックするとイベントがトリガーされ、コントロールの表示時間方法が呼び出され、ボタンをクリックすると、コントロール上の時間の変化がわかります.OK、この文章はここまでで本文は終わります.C#を使用してActiveXコントロールを開発することを簡単に理解するだけです