2009-04-30 12 views
1

インストール先のファイルの1つが、ユーザーの宛先マシン上のレジストリキーと値のペアが指す場所にコピーする必要があります。InstallShield Installscript-MSIプロジェクトのレジストリキー/値が指すディレクトリにファイルをインストールするにはどうすればよいですか?

今は、コンポーネントビューで[TempFolder]にコピーするようにファイルを設定したクルージーソリューションがあります。その後、レジストリから値を取得するOnFirstUIBefore()関数のカスタムInstallScriptコードがあります。 [TempFolder]のMSIGetPropertyを実行し、最後に[TempFolder]のCopyFile()をレジストリから取得したパスに格納します。

これは機能しますが、少し面倒です。同僚は、私がSHOULDは、MY_RSRC_DIRのようなカスタムプロパティ名でMSISetPropertyを実行して、何らかの理由で正しい場所にファイルをコピーするためにコンポーネントペインでそのカスタムプロパティを使用できると考えていると言います。

私はOnBegin()関数でMSISetPropertyを実行することができますが、そのプロパティを[コンポーネント]ビューにプラグインしようとすると、まだ動作することができませんでした。

誰でもこれを行いましたか?

答えて

1

InstallScript MSIプロジェクトでは、MSIのアプローチを採用する必要があります。補助フォルダを作成し(たとえば、[ファイルとフォルダ]ビューに追加するなど)、ファイルを追加します。そのディレクトリのプロパティ(NEWFOLDER1のようなもの;大文字であることを確認してください)を確認してください。必要に応じて、ディレクトリテーブルを編集してこれをTARGETDIRの子にすることはできますが、これはオプションで、レジストリ検索が失敗した場合にファイルが[WindowsVolume]の下に置かれる可能性があるため、INSTALLDIRの子として残すのが最善でしょう。

CostInitializeの前に、システム検索、SetPropertyカスタムアクション(タイプ51)、またはMsiSetProperty()を使用してプロパティ(たとえばNEWFOLDER1)を設定することができます。 。原価計算後にそれを見つける必要がある場合は、プロパティがディレクトリを更新しなくなるため、SetDirectoryカスタムアクション(タイプ35)またはMsiSetTargetPath()のいずれかを使用する必要があります。

この方法では、Windowsインストーラによってファイルの場所が追跡され、アンインストールが正しく機能するはずです。

+0

あなたはちょうどあなたが何を言ったか分かりません。私はnoob w.r.t installshieldです。あなたはもっと詳細を提供することができます...私は1点を与える:) – David

関連する問題