フリーソフト

« A. Modern User Interface - NSIS Users Manual | トップページ | C. Useful Scripts - NSIS Users Manual »

B. DLL/TLB Library Setup - NSIS Users Manual

これはNSIS Users Manualの非公式な日本語ドキュメントです。本コンテンツの利用によって生じたいかなる損害も、著者は一切の責任をとることができませんので、自己責任での利用をお願いします。読みやすさを重視するため必ずしも原文に忠実でない部分があります。また、誤りが含まれている可能性もあります。必ず原文をご確認ください。 訳者:Kawai

前へ | 目次 | 次へ

付録 B: DLL/TLB ライブラリのセットアップ

B.1 はじめに

[原文]

ライブラリのヘッダファイルは、ダイナミック リンク ライブラリ(DLL)やタイプ ライブラリ(TLB)をセットアップするために利用できます。必要に応じて、以下のアクションが実行されます。

  • ファイルをコピー
  • 再起動時にファイルをコピー
  • バージョンチェック
  • 登録と登録解除
  • 再起動時に登録と登録解除
  • 共有 DLL のカウント
  • Windows ファイル保護のチェック

マクロは、ヘッダ ファイル Library.nsh に含まれていますので、以下のようにスクリプト内でインクルードする必要があります。

!include Library.nsh

ライブラリのマクロは、Windows 以外のプラットホームでは制限があることに注意してください。Windows 以外のプラットホームでは、コンパイル時にDLL のバージョン情報が要求されます。

B.2 ライブラリのインストール

[原文]

B.2.1 はじめに

[原文]

InstallLib マクロによってライブラリをインストールすることができます。ライブラリのセットアップ中に何か問題が発生した場合は、エラー フラグがセットされます。

ユーザに再起動するかを問い合わせるためには、モダン UI の完了ページを利用するか、あるいは IfRebootFlag を利用して独自のページ、またはメッセージ ボックスを作成します。

B.2.2 引数

[原文]

libtype shared install localfile destfile tempbasedir

libtype

ライブラリのタイプ

DLL - ダイナミック リンク ライブラリ(DLL)
REGDLL - 登録が必要なDLL
REGEXE - /regserver による登録が必要なEXE COM サーバ
TLB - タイプ ライブラリ、あるいはタイプ ライブラリを含む DLL
REGDLLTLB - タイプ ライブラリを含む、登録が必要な DLL

shared

他のアプリケーションとライブラリを共有するかどうかを指定する

NOTSHARED - ライブラリを共有しない
$VARNAME - Variable that is empty when the application is installed for the first time, which is when the shared library count will be increased.

install

インストール方法を指定する

REBOOT_PROTECTED

  • 使用中の場合、再起動時にライブラリを更新する(システム ファイルに対して必要)。
  • Windows ファイル保護によって保護されていない場合は、ライブラリを更新する。

NOREBOOT_PROTECTED

  • ライブラリが使用中の場合、ユーザに警告する。ユーザは、ライブラリを使用しているアプリケーションを閉じる必要がある。
  • Windows ファイル保護によって保護されていない場合は、ライブラリを更新する。

REBOOT_NOTPROTECTED

  • 使用中の場合、再起動時にライブラリを更新する(システム ファイルに対して必要)。
  • Windows ファイル保護をチェックせずにライブラリを更新する。

NOREBOOT_NOTPROTECTED

  • ライブラリが使用中の場合、ユーザに警告する。ユーザは、ライブラリを使用しているアプリケーションを閉じる必要がある。
  • Windows ファイル保護をチェックせずにライブラリを更新する。

localfile

コンパイラ システムにおけるライブラリの場所

destfile

ユーザのシステムにおけるライブラリの保存場所

tempbasedir

システムの再起動が必要な場合に、一時ファイルを保存するためのユーザ システムにおけるディレクトリ

Windows 9x/ME をサポートする場合は、このディレクトリは出力先(destfile)と同じボリュームでなければなりません。Windows の一時ディレクトリはどのボリュームに置くこともできますので、このディレクトリを使用することはできません。

B.2.3 オプション

[原文]

InstallLib マクロの振る舞いを修正するには、マクロを挿入する前に以下を Define してください。

B.2.3.1 LIBRARY_X64

  • Windows x64 用にビルドされた DLL をインストールする。
  • 警告: ファイル システム リダイレクトがリセットされます。

B.2.3.2 LIBRARY_SHELL_EXTENSION

  • 登録後に SHCNE_ASSOCCHANGED で SHChangeNotify を呼び出する場合に定義します。
  • シェル エクステンションをインストールしたとき、あるいはファイルの関連付けを変更したときに、シェルをリフレッシュするために使用します。

B.2.3.3 LIBRARY_COM

  • 登録後に CoFreeUnusedLibraries を呼び出す場合に定義します。
  • COM ライブラリをインストールする場合において、すべての不要なライブラリをメモリからアンロードするために使用します。

B.2.3.4 LIBRARY_IGNORE_VERSION

  • ファイルのバージョン情報を無視し、すでに存在する場合でも常にインストールする場合に定義します。
  • 古いバージョン、あるいは特定のバージョンが要求される場合に使用します。
  • $SYSDIR にインストールされる DLL に対しては推奨されません。

B.2.4 注意点

[原文]

  • Windows 9x/ME をサポートする場合は、短いファイル名だけしか使用できません(8.3)。
  • 警告: DLL を配布する場合は、常に再配布不可能なファイルを使用してください。あなたのシステム ディレクトリからファイルをコピーしてはいけません。

B.2.5 例

[原文]

B.2.5.1 非共有 DLL

 !insertmacro InstallLib REGDLL NOTSHARED REBOOT_NOTPROTECTED dllname.dll $SYSDIR\dllname.dll $SYSDIR

B.2.5.2 共有 DLL

 ;Add code here that sets $ALREADY_INSTALLED to a non-zero value if the application is
 ;already installed. For example:

 IfFileExists "$INSTDIR\MyApp.exe" 0 new_installation ;Replace MyApp.exe with your application filename
   StrCpy $ALREADY_INSTALLED 1
 new_installation:

 !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_NOTPROTECTED dllname.dll $SYSDIR\dllname.dll $SYSDIR

B.3 ライブラリのアンインストール

[原文]

B.3.1 はじめに

[原文]

UnInstallLib マクロを使用するとライブラリをアンインストールすることができます。ライブラリの削除中に何か問題が発生した場合は、エラー フラグがセットされます。

B.3.2 引数

[原文]

libtype shared uninstall file

libtype

ライブラリのタイプy

DLL - ダイナミック リンク ライブラリ(DLL)
REGDLL - 登録が必要なDLL
REGEXE - /regserver による登録が必要なEXE COM サーバ
TLB - タイプ ライブラリ、あるいはタイプ ライブラリを含む DLL
REGDLLTLB - タイプ ライブラリを含む、登録が必要な DLL

shared

他のアプリケーションとライブラリを共有するかどうかを指定する

NOTSHARED - ライブラリを共有しない
SHARED - ライブラリは共有される。共有ライブラリ カウントが、ファイルがすでに利用されていないことを示している場合は削除される。

uninstall

アンインストールの方法を指定する

NOREMOVE

  • ライブラリは削除されません。Visual Basic/C++/MFC ランライムのような重要なシステムファイルに対して、このオプションを使用してください。

REBOOT_PROTECTED

  • 使用中の場合、再起動時にライブラリを削除する(システム ファイルに対して必要)。
  • Windows ファイル保護によって保護されていない場合は、ライブラリを削除する。

NOREBOOT_PROTECTED

  • ライブラリが使用中の場合、ユーザに警告する。ユーザは、ライブラリを使用しているアプリケーションを閉じる必要がある。
  • Windows ファイル保護によって保護されていない場合は、ライブラリを削除する。

REBOOT_NOTPROTECTED

  • 使用中の場合、再起動時にライブラリを削除する(システム ファイルに対して必要)。
  • Windows ファイル保護をチェックせずにライブラリを削除する。

NOREBOOT_NOTPROTECTED

  • ライブラリが使用中の場合、ユーザに警告する。ユーザは、ライブラリを使用しているアプリケーションを閉じる必要がある。
  • Windows ファイル保護をチェックせずにライブラリを削除する。

file

ライブラリの場所

B.3.3 オプション

[原文]

UnInstallLib マクロの振る舞いを修正するには、マクロを挿入する前に以下を Define してください。

B.3.3.1 LIBRARY_X64

  • Windows x64 用にビルドされた DLL をアンインストールする。
  • Warning: SetRegView とファイル システム リダイレクトがリセットされます。

B.3.3.2 LIBRARY_SHELL_EXTENSION

  • 登録解除後に SHCNE_ASSOCCHANGED で SHChangeNotify を呼び出す場合に定義します。シェル エクステンションをアンインストールしたとき、あるいはファイルの関連付けを変更したときに利用します。

B.3.3.3 LIBRARY_COM

  • 登録解除後に CoFreeUnusedLibraries を呼び出す場合に定義します。COM ライブラリをアンインストールする場合において、すべての不要なライブラリをメモリからアンロードするために使用します。

B.3.4 例

[原文]

 !insertmacro UnInstallLib REGDLL SHARED REBOOT_NOTPROTECTED $SYSDIR\dllname.dll

B.4 Visual Basic 6 のランタイム ファイル

[原文]

VB6 ランタイム ファイルをセットアップするには、新しい VB6RunTime.nsh ヘッダ ファイルを利用することができます。最新のランタイム ファイルを取得するには、vb6runtime.zip をダウンロードして展開してください。

 !include VB6RunTime.nsh

 Var AlreadyInstalled

 Section "-Install VB6 run-time files"

   ;Add code here that sets $AlreadyInstalled to a non-zero value if the application is already installed. For example:
   IfFileExists "$INSTDIR\MyApp.exe" 0 new_installation ;Replace MyApp.exe with your application filename
     StrCpy $AlreadyInstalled 1
   new_installation:

   !insertmacro VB6RunTimeInstall C:\vb6runtimes $AlreadyInstalled ;Replace C:\vb6runtimes with the location of the files

 SectionEnd

 Section "-un.Uninstall VB6 run-time files"

   !insertmacro VB6RunTimeUnInstall

 SectionEnd

備考:

  • Visual Basic アプリケーションを動作させるには、追加のファイルをインストールする必要があるかもしれません(例えば、ユーザ インターフェース コントロールのための OCX ファイル)。
  • ランタイム ファイルをインストールするには、管理者権限が必要です。これらの権限が有効かチェックするために、マルチユーザ ヘッダ ファイルを使用してください。
  • 必要な場合にユーザがコンピュータを再起動できるようにするためには、モダン UI の完了ページか他のチェック( IfRebootFlag を参照)を追加してください。

前へ | 目次 | 次へ


SourceForge Logo

« A. Modern User Interface - NSIS Users Manual | トップページ | C. Useful Scripts - NSIS Users Manual »

技術文書」カテゴリの記事