質問

2 つの機能を持つ InstallShield 2010 (基本 MSI) を使用してインストーラーを作成しています。

最初の機能は次の内容で構成されます。

  • x86 としてコンパイルされたメイン .NET アプリケーション、
  • メイン アプリケーションで使用されるいくつかのネイティブ x86 サードパーティ DLL (x64 バージョンは利用できません)。

2 番目の機能には、AnyCPU としてコンパイルされた MS Reporting Services の拡張機能である単一コンポーネントが含まれています。

UI シーケンス中に、InstallScript カスタム アクションを使用して、x86 と x64 の両方のレジストリ ツリーから利用可能なすべての Reporting Services インスタンスを列挙します。

ユーザーは、拡張機能をデプロイするインスタンスを選択するよう求められます。

選択したインスタンスに基づいて、ファイル システム内の Reporting Services の実際の場所 (通常は "C:\Program Files\Microsoft SQL Server\MSSQL.2 eporting Services" など) をレジストリに照会し、この値を MSI プロパティに保存します。

次に、[ディレクトリの設定] アクションを使用して、コンポーネント (拡張機能) の宛先ディレクトリをその MSI プロパティの値に設定します。

x64 Reporting Services 用にインストールしようとしている場合を除き、すべてが完全に正常にインストールされます。x64 Reporting Services 用にインストールしようとしている場合、拡張ファイルが間違った場所にインストールされます。MSI プロパティが正しいパス「C:\Program Files\MicroSoft...」に設定されていても (msi ログを確認しました)、システムは自動的に「Program Files (x86)」にリダイレクトしているようです。

この問題を克服する可能な解決策はありますか?

役に立ちましたか?

解決 2

最終的に、InstallScript カスタム アクションを使用して、64 ビット MSI を作成せずにこの問題を自分で解決しました。

インストールする最初のカスタム アクション:

  • 必要なファイルを目的の場所に手動でコピーします (InstallScript は x64 プログラム ファイルにアクセスできます)
  • アンインストール中に使用するこの機能のキー コンポーネントとしてこの場所をレジストリに保存します

アンインストールする 2 番目のカスタム アクション:

  • レジストリからインストール場所を読み取ります (この値は WindowsInstaller によって「ProgramFiles (x86)」に自動変換されるため、システム検索を使用して取得しないでください)。
  • ファイルの削除

他のヒント

あなたは64ビットのPROGRAMFILESフォルダにインストールする必要がある場合は、

、64ビットMSIを使用しています。

\ PROGRAMFILES(x86の:

あなたはをINSTALLDIRというしProgramFile64へのプロパティPROGRAMFILESを変更することができますアプリケーションが32ビットであるので、パスはCとなりますので、これは、所望の経路にインストールするお手伝いをします)\これは、あなたが64ビット互換としてあなたの部品を作っていると一緒にあなたの会社名\お使いの製品名?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top