私の問題:
2つのマージモジュールを作成しました。それらをAおよびBと呼びましょう。マージモジュールBはAに依存しています。Aはaaa.dllをウィンドウに並べてインストールします。Bには、インストール中に登録され、aaa.dllに依存するbbb.dllが含まれています。補足として、マージモジュールAはInstallshield 2012で作成され、マージモジュールBはVisualStudio2010ウィザードを使用して作成されました。
両方のマージモジュールをインストールするインストールシールドプロジェクトがあります。[アプリケーションデータ]->[再配布可能ファイル]に移動し、インストールにBを追加します。これにより、Aが自動的にチェックオフされます。[Organization]-> [Setup Design]に移動し、Bを含む機能を展開すると、[B]をクリックします。Bに関する情報が表示されたウィンドウが表示されます。そこに、Aを正しくリストする[Dependencies]見出しがあります。
プロジェクトをビルドして、クリーンなVMにインストールしようとしています。インストール中に、bbb.dllの登録に失敗したというエラーが表示されます。無視してキャンセルします。この時点で、マシンのwinsxsを調べたところ、aaa.dllが適切なフォルダーに存在しないことがわかりました。むしろ、winsxs \InstallTemp\サブフォルダーに存在します。次に、エラーポップアップで[無視]をクリックすると、インストールはそれ以上エラーなしで続行されます。次に、完了後、bbb.dllを手動で正常に登録でき、aaa.dllは適切なwinsxsサブフォルダーに存在します。
私の質問は、マージモジュールAを完全に終了させ、aaa.dllを正しい場所に配置して、すべてが正しくインストールされるようにするにはどうすればよいですか?
私が試したこと:
- InstallShieldプロジェクトのOrganization->SetupDesignで複数の機能を作成してみました。そこで、3つの機能を作成しました。上部の機能1にはAが含まれています。機能2にはAが含まれ、次にBが含まれています。最後に機能3にはAが再び含まれています。3つの機能すべてを必須にしました。これにより、機能全体のインストールが完了し、aaa.dllが正しい横に並んだ場所に配置されることを期待していました。しかし、そのような運はありません。(順序が逆になっている場合に備えて、3つの機能を作成しました)
- 問題は、aaa.dllが時間内または適切な場所にインストールされていないことだと確信しています。これをテストするために、最初にマージモジュールAをインストールしたインストールシールドインストーラーを使用してaaa.dllをインストールしようとしました。次に、メインインストーラーを実行すると、すべてが機能しました。
テキストの壁と不適切な文法\スペルでごめんなさい。本当にイライラするので、誰か他の人が最終的にこの問題に遭遇した場合に備えて、自分で問題を見つけたら投稿します。