WBCustomizerの配布

解決


BIC  2007-09-25 20:10:00  No: 99468

【開発環境】
Windows XP Pro SP2
VB6 SP2

アプリケーションの配布に際し、WBCustomizerを同梱しようと考えています。

しかし、利用者は「regsvr32 WBCutomizer」を実行しなければエラーを受けることになります。

ディストリビューションウィザードを使用し、配布したパッケージをインスト−ルすれば問題はありませんが、容量の関係上、アプリケーションとランタイムは別々にインストールしてもらう予定です。そのため、上記のregsvr32の手間を省きたいと思っています。

この場合、配布するファイルを「test.exe」の自己解凍形式ファイルとし、
解凍後、WBCutomizerをコピーし、regsvr32を実行するバッチファイルを実行してはどうかと思っていますが、これよりスマートな方法をご存知の方がいたら教えていただけますでしょうか?


魔界の仮面弁士  2007-09-25 21:09:00  No: 99469

> しかし、利用者は「regsvr32 WBCutomizer」を実行しなければエラーを受けることになります。
# 微妙にスペルミスをしているのは兎も角として。
そのコンポーネントとは、下記のことですね?
http://support.microsoft.com/kb/183235/

> アプリケーションとランタイムは別々にインストールしてもらう予定です。
ひとつ注意点が。アプリケーション単体の配布は問題ありませんが、
『VB のランタイムのみ』の再頒布は、ライセンス上、許可されていません。

VB製のアプリと共に再頒布するよう、ソフトウェア製品ライセンス(EULA.TXT)の
第4条「頒布の条件;ライセンスの制限」にて定められています。

容量が問題との事ですが、配布メディアのサイズ上限の問題であれば、
ディストリビューション ウィザードにしても、Visual Studio Installer にしても、
分割配布がサポートされていますので、それを利用してみてください。

また、ランタイムを毎回再頒布するのは無駄であるという意味であれば、
ランタイム入りとランタイム無しの2バージョンを用意するなどの手法もあります。
(Visual Studio Installer なら、マージモジュールにしてしまえば良いでしょうし)

> 解凍後、WBCutomizerをコピーし、
> regsvr32を実行するバッチファイルを実行してはどうかと思っていますが、
それも一つの手法だと思いますよ。極端な例では、バージョン管理を
一切無視してしまい、自己解凍書庫の展開先を固定的なフォルダにしておき、
強制上書き後に REGSVR32 も自動起動させても動作はするでしょうし。

ただ、簡易版でも良いので、きちんとしたインストーラを使った方が
後々問題が出にくいとは思いますけれどね。
http://dobon.net/vb/installer/


BIC  2007-09-26 04:20:02  No: 99470

【開発環境】
Windows XP Pro SP2
VB6 SP2

お世話になっています。ご回答ありがとうございます。

>アプリケーション単体の配布は問題ありませんが、
>『VB のランタイムのみ』の再頒布は、ライセンス上、
>許可されていません。

「ランタイムが別途必要となります。こちらからどうぞ。」という感じで直リンクを配置することは問題ないのではないでしょうか。この点わかりませんのでお教え願えますでしょうか。

>ただ、簡易版でも良いので、きちんとしたインストーラ
>を使った方が後々問題が出にくいとは思いますけれどね。

ユーザーにとってみるとインストールするということは多少なりとも抵抗があるように思い、インストールなしで配布することにしました。
また、すでにランタイムをインストールしているユーザーも考慮した上でのことです。

私が作ったバッチファイルは以下のようになります。自己解凍後、実行し、WBCustomizer.dllをコピー(移動)し、自身を削除するコマンドになります。これで見た目は実行ファイルのみが解凍されたかのようになります。

COPY WBCustomizer.dll C:\WINDOWS\SYSTEM32\
REGSVR32 WBCustomizer.dll
DEL WBCustomizer.dll
DEL text.cmd

ご意見ありがとうございます。


魔界の仮面弁士  2007-09-26 07:15:43  No: 99471

>>> これよりスマートな方法をご存知の方がいたら教えていただけますでしょうか?
スマートかどうかの判断基準はいろいろありますが、配布の方法は複数ありますし、
それらを実際に検証した上で判断する必要はありそうですね。

> この点わかりませんのでお教え願えますでしょうか。
「WBCustomizer.dll のみ」の再頒布であれば、許可されているはずです。
そもそもソレは、あくまで『サンプル』であり、必要に応じてソースコードを改変することも
許容された扱いになっているようですしね。

一方で、「VB6 のランタイムのみ」という意味であれば、エンドユーザによる二次配布や、
デザインタイムライセンスの配布などを伴わない限りは、その配布方式をとったとしても、
(単体での再配布ではなく)『アプリと共に配布』と看做されるでしょうね。

とはいえ、ライセンスに関わる具体的な問題は、Microsoft に直接お尋ねください。
私では保証できかねます。

> ユーザーにとってみるとインストールするということは多少なりとも抵抗があるように思い、
開発者や上級ユーザは、おそらくそうだと思います。その一方で、初心者ユーザは逆に
インストーラ(またはそれに順ずるもの)があった方が楽だと感じるようです。

で、それは別にバッチファイルでも良いと思います。ただ、それだとバージョンチェック機構などが
甘くなってしまうので、簡易インストーラを使ったり、ディストリビューション ウィザードでいうところの
「インターネット パッケージ」のような配布形態を採るのも、選択肢の一つになりえるかな、と。

> これで見た目は実行ファイルのみが解凍されたかのようになります。
それでも良いとは思いますが、強制上書きなら、バッチファイルでコピーせずとも、
WBCustomizer.dll の解凍先を system32 にしておいた状態でアーカイブしておくのも手かと。
(自己解凍書庫によっては、exe や inf を、解凍後に自動実行してくれるものもありますし)

>>> しかし、利用者は「regsvr32 WBCutomizer」を実行しなければエラーを受けることになります。
必ずしもそうとは言えません。WinXP が相手なら、レジストリ未登録でも動作可能です。

たとえば、レジストリ未登録の環境だと、WBCustomizer クラスのインスタンス生成時に
『実行時エラー '429': ActiveX コンポーネントはオブジェクトを作成できません。』
というエラーが発生しますが、相手が Windows XP であるならば、

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" processorArchitecture="X86"
    name="WBCustomizerLib.WBCustomizer" type="win32" />
  <description>Sample</description>
  <file name="WBCustomizer.dll">
    <comClass clsid="{D31843D1-C275-11D1-ABEE-602546C11E08}" />
  </file>
</assembly>

という XML ファイルを、拡張子 manifest として
  Project1.exe
  Project1.exe.manifest
  WBCustomizer.dll
のように配置しておくことで、レジストリ登録なしでも動作させることができます。
(記述を変更すれば、他のフォルダにある DLL をロードすることも可能です)

また、Visual Studio 等の exe リソースを編集可能なツールがあれば、
http://zoosir.hp.infoseek.co.jp/tips/other/other01.htm
のようにして、その manifest を exe 内に埋め込むこともできます。
(この場合、Project1.exe.manifest の配布が不要になります)


BIC  2007-09-28 20:55:40  No: 99472

【開発環境】
Windows XP Pro SP2
VB6 SP2

遅くなりました(汗

>スマートかどうかの判断基準はいろいろありますが

それもそうですね。いずれにせよ、今回はWBCustomizerをレジストリ登録することは避けられませんので、ユーザーには「インストール」をしてもらうことには変わりませんので、魔界の仮面弁士さんのおっしゃるように、ユーザーに分かりやすい形でのインストール形式を採りたいと思います。

>WinXP が相手なら、レジストリ未登録でも動作可能です。

私の環境では「regsvr32 WBCustomizer.dll」を実行しなければエラーになります。ただ、PC自体を軽量化カスタマイズしていますので、そのために発生するエラーかも知れません。

manifestファイルについてですが、詳しい知識を持っていませんので、今後の課題とさせていただきます。

今回は大変勉強させていただきました。ありがとうございます。


魔界の仮面弁士  2007-09-28 21:54:36  No: 99473

> manifestファイルについてですが、詳しい知識を持っていませんので、今後の課題とさせていただきます。

入門編として、この辺りが参考になるかと。
http://www.microsoft.com/japan/msdn/thisweek/vbxp/vbxp2.aspx


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加