DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Inno setup の VBシステムファイル組み込み

環境/言語:[VB6 sp6 Win2000]
分類:[インストーラ]

投稿し直しました。のでよろしくお願いします。

http://dobon.net/vb/installer/installer2-11.html
の日本語VB6ソフトを動かすのに必要だと思われるファイルをインストールするためのスクリプト
ついてですが、少し判らないことがありましたので質問させていただきます。

; VB6ランタイムライブラリ
; 必要最低限のファイル
Source: "{sys}\ASYCFILT.DLL"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall external

external の ヘルプ解説では
This flag instructs Inno Setup not to statically compile the file specified by the Source parameter into the installation files, but instead copy from an existing file on the distribution media or the user's system. See the Source parameter description for more information.
となっています。

すなわち、上の例では作成される SetUP.exe にはコンパイルする際に使用するPCの {sys}\ASYCFILT.DLL
ファイルは SetUP.exe に組み込まれず、ソフトをインストールしようとするユーザーが SetUP.exe を実行
する際に、ユーザーPCの{sys}\ASYCFILT.DLLファイルを、同じくユーザーPCの{sys}フォルダーにコピー
すると言う指定になっているはずです。

したがって、上記のスクリプトを記載する意味はなく
>Inno Setupのヘルプを読むと、SYSTEMディレクトリにあるDLLをSourceに指定すべきではなく、
>別のディレクトリに置いておくべきだというような注意書きがあります。この忠告に従う場合は、
>下記のスクリプトの「Source: "{sys}..."」の部分をそのファイルのある別のディレクトリに
>書き換えてください。またこのときファイル名をフルパスで指定したときは、Flagsのexternal
>を削除してください。(01/9/6追加)

のように、Windowsのバージョンに依存しない配布可能なDLL,OCXをコンパイルPCの特定のフォルダー
で管理・保存し、それを external 無しで記載するべきでは無いでしょうか?
例:
Source: "C:\hogehoge\VBDLL\ASYCFILT.DLL"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall
かなり前に書いたものなのでよく覚えていないのですが、確かにIMAさんがおっしゃっている通りという気がしますね。確認しだい、修正すべき箇所は修正します。

DOBON.NET | プログラミング道 | プログラミング掲示板