2 つの機能を持つ InstallShield 2010 (基本 MSI) を使用してインストーラーを作成しています。
最初の機能は次のとおりです。
- x86 としてコンパイルされたメインの .NET アプリケーション、
- メインアプリケーションで使用されるいくつかのネイティブ x86 サードパーティ dll (x64 バージョンは利用できません)。
2 番目の機能には、AnyCPU としてコンパイルされた MS Reporting Services の拡張機能である単一のコンポーネントが含まれています。
UI シーケンス中に、InstallScript カスタム アクションを使用して、x86 と x64 の両方のレジストリ ツリーから利用可能なすべての Reporting Services インスタンスを列挙しています。
ユーザーは、拡張機能をデプロイするインスタンスを選択するよう求められます。
選択したインスタンスに基づいて、通常は "C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services" のようなファイル システム内の Reporting Services の実際の場所をレジストリに照会し、この値を MSI プロパティに格納しています。
次に、Set Directory アクションを使用して、コンポーネント (拡張機能) の宛先ディレクトリをその MSI プロパティの値に設定します。
拡張ファイルが間違った場所にインストールされている場合、x64 Reporting Services 用にインストールしようとしていない限り、すべてが完全に正常にインストールされます。MSI プロパティが正しいパス「C:\Program Files\MicroSoft...」に設定されていても (msi ログを確認しました)、システムが自動的に「Program Files (x86)」にリダイレクトされているようです。
この問題を克服する解決策はありますか?