質問

現在、Windows ロゴ プログラムの検証のために間もなく提出される予定のアプリケーションを完成させています。要件の 1 つは x64 互換性です。具体的には、Crystal Reports 2008 は x64 で動作する必要があります。

私の問題は、Crystal Reports Basic 2008 (Visual Studio 2008 にパッケージされているもの) にはマージ モジュールがなく、提供されている .msi インストーラーを使用してインストールする必要があることです。x86 と x64 用に個別のインストーラーが提供されています。

では、インストール中に x86 と x64 を検出し、適切な Crystal msi を実行するにはどうすればよいでしょうか?これはマージモジュールなしでも可能ですか?

編集:

これ:

IF PROCESSOR_ARCHITECTURE == x86 AND
   PROCESSOR_ARCHITEW6432 NOT DEFINED THEN
   // OS is 32bit
ELSE
   // OS is 64bit
END IF

それを検出する方法を教えてくれるようです(MicSimに感謝します)。しかし、MSI でこれを実行するにはどうすればよいでしょうか?カスタムアクションですか?そして、x32 および x64 クリスタル レポートに必要なさまざまな msi をトリガーするにはどうすればよいでしょうか?

また、なぜ x86 Crystal インストーラーが WOW64 では動作しないのでしょうか?WOW64 x86 アプリを使用するには、x64 Crystal をインストールする必要があります。イライラする...

編集2:

さて、x86/x64 の検出についてはここで説明されているようです。次に、選択した msi を手動でトリガーしてみてはどうでしょうか?

役に立ちましたか?

解決

私が見つけた 64 ビット オペレーティング システムを検出する最も簡単な方法は、 バージョンNT64 財産。このプロパティは、コンポーネントまたはカスタム アクションの条件で使用できます (例:状態 バージョンNT64ではありません 32 ビット オペレーティング システムの場合にのみ当てはまります)。

インストール中に他の MSI パッケージをインストールする場合は、少し複雑になります。Windows インストーラでは、1 つの MSI のみが実行できます。 シーケンスの実行 一度に。これは、Crystal Reports MSI をインストールする必要があることを意味します。 UIシーケンス カスタム アクションを使用する (これを行う場合は注意してください。 UIシーケンス MSI がサイレント モードで実行されている場合はスキップされます)、または Crystal Reports MSI と独自の MSI の両方を順番に実行する何らかのブートストラップ プログラムを作成します。

私は独自のブートストラップを作成したことはありませんが、InstallShield の setup.exe にはブートストラップ プログラムが組み込まれています。この方法でインストールされたパッケージを彼らは呼びます 前提条件.

他のヒント

グーグルで調べてみました:MSI プロジェクトがある場合は、説明されているようにプロパティを確認できます。 ここ.

プロセスと OS アーキテクチャの検出に関する詳細については、こちらをお読みください。 この MSDN ブログ 「ハウツー」について:プロセスビットを検出します。」

あなたはクリスタルをトリガすることができます[SystemFolder]のmsiexecを実行するカスタムアクションでMSIを報告します。ただ、引数として "/ I [YourFolderWithCRMSI] msiname.msi" を指定します。

によると このフォーラム, Crystal Reports には、Visual Studio 2008 用のマージ モジュールが含まれるようになりました。

HREF=https://smpdl.sap-ag.de/~sapidp/012002523100005986132008E/cr10_net_mm.zip

編集(作者より):これは、Visual Studio 2008 にバンドルされている Crystal Reports では機能しないことが判明しました。

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