jrsoftware.org // Jordan Russell's Software
-Home

製  品

-Inno Setup


-Toolbar2000

-Toolbar97

-StripReloc

-その他...

サポート

-ニュースグループ

-連絡先

Inno Setup知識データベース

Inno Setup知識データベースには付属文書やFAQに含まれていない追加の情報を納めています。
(訳注:以下に示す情報は,2004年4月6日時点のスナップショットです。最新の情報に関しては,こちらをご覧下さい。)

shfolder.dllを配布する方法

記事作成: 2003-10-13 23:38 GMT by Jordan Russell
最終更新: 2003-11-04 08:41 GMT by Jordan Russell


なぜshfolder.dllを配布するのですか?

アプリケーションがSHGetFolderPath関数を使用するなら,shfolder.dllがユーザーのシステムになければなりません。このDLLはインターネットエクスプローラのバージョン5以降に付随しています。インターネットエクスプローラに依存したくなければ,インストール中に別個にshfolder.dllをインストールしてもよいでしょう(注:Windows 98の第2版以降では,インターネットエクスプローラのバージョン5がインストールされています)。

どうやってshfolder.dllを配布するのですか?

  1. shfinst.exeをダウンロードしてください。
  2. shfinst.exeを実行すると,ShFolder.exeというファイルが取り出されます。
  3. 次の行をスクリプトに追加してください:
    [Files]
    Source: "ShFolder.exe"; DestDir: "{tmp}"
    
    [Code]
    const
      { 配布するshfolder.dllのバージョンは,5.50.4027.300です }
      OurShFolderVersionMS = (5 shl 16) or 50;
      OurShFolderVersionLS = (4027 shl 16) or 300;
    
    function ShouldInstallShFolderDLL: Boolean;
    var
      MS, LS: Cardinal;
    begin
      { shfolder.dllが存在していないか,より古いバージョンの場合だけ,インストールします。
        これらのチェックは本当は必要ないのですが,Windows 95で該当バージョンが既にインストー
        ルされているときに,不要な再起動を避けるためです。                                    }
      if not GetVersionNumbers(ExpandConstant('{sys}\shfolder.dll'), MS, LS) then
        Result := True
      else
      if (OurShFolderVersionMS > MS) or
         ((OurShFolderVersionMS = MS) and (OurShFolderVersionLS > LS)) then
        Result := True
      else
        Result := False;
    end;
    
    [Run]
    Filename: "{tmp}\ShFolder.exe"; Parameters: "/r:n /q:1"; Check: ShouldInstallShFolderDLL; OnlyBelowVersion: 0,5.0
    
    (注: OnlyBelowVersionパラメータはWindows 2000以降のバージョンでインストールされないようにするためのものです。これらのバージョンでは,システムファイル保護により,このファイルを置換することはできません。)

Site contents Copyright © 1997-2004 Jordan Russell. All rights reserved.

Current category: Alphisation - Misc > Documents > Inno Setup, ISTool, ヘルプファイルの日本語化 | Salvaged by: Nardog