木曜日, 9月 21, 2006

[InstallShield] OS別に違うファイルをインストールする為に

使用バージョン InstallShield 11 premiumEdition

例えば、OSによって違うモジュールをインストールしたい時。

Program files /Appフォルダに、
XPでは、XP用の「hoge.dll」を、
2kでは、2k用の「hoge.dll」をインストールしたい時の方法。

ここでは、XPと2kで振り分けてインストールする事を考える。

1.複数のコンポーネントを作成する。
  • 「インストールデザイナー」タブ → 「アプリケーションデータ」→「ファイルとフォルダ」の順に選択。
  • 「インストール先コンピュータのフォルダ」欄で、「インストール先コンピュータ」を選択し、右クリック。「コンポーネントの表示」にチェックが入っている事を確認する。
  • 「ProgramFilesFolder」を選択した状態で右クリック。「新規フォルダ」を選択し、「App」と名前をつける。
  • 「App」フォルダを選択した状態で右クリック。「新規コンポーネント」を選択。とりあえず、「dll_2k」と名前をつける(2k用モジュール格納用)。
  • 再び「App」フォルダを選択した状態で右クリック。「新規コンポーネント」を選択して、「dll_XP」と名前をつける(XP用モジュール格納用)。
  • 「ソースコンピュータのファイル」欄から、「インストール先コンピュータのファイル」欄にD&Dを行い、2k用、XP用のコンポーネントを追加する。

2.対象OSと条件でインストール対象を決定する。
  • 「インストールデザイナー」タブ → 「編成」→「コンポーネント」の順に選択。
  • 「コンポーネント」の配下に、「dll_2k」と「dll_XP」があるはず。
  • 「dll_2k」を選択し、「dll_2k コンポーネント」欄、「オペーレーティングシステム」で「Windows 2000」を選択。これで、dll_2kのコンポーネントは、2kのみにインストールされるようになる。
  • 「dll_XP」を選択し、「dll_XP コンポーネント」欄、「条件」で「VersionNT=501 And WindowsBuild>=2264」と記入。これで、dll_XPのコンポーネントは、XPのみにインストールされるようになる。


※ 注意 パッチアップデート
この方法で作成したモジュールに対して、
メジャーアップデート、マイナーアップデートはできるが、
パッチアップデートはうまく作成できないようだ。

理由としては、
パッチアップデートは、以前のファイルと最新ファイルを比較し、
差分を持っているが、例えばXPのマシンでパッチを作成しようとすると、
XP用のコンポーネントのみしか展開されない。
そのため、2kのマシンでパッチアップデートを行おうとしても、
探しているものとは、違うファイルが該当場所にあるため、パッチアップデートに失敗する。


※ 注意 OSを2kからXP、もしくはXPから2kにする場合
うまくいかない。
2kでインストール、OSをXPにアップグレード、
2kでマイナーアップデートすると、2k用のファイルがインストールされる。
#どこかに情報が残っているんだろうか。

<google 検索 キーワード>
OS判断 違うファイル インストール
インストーラ 複数OS 対応

0 件のコメント: