1

「起動条件」内の条件から (展開プロジェクトで設定できる) TargetPlatform プロパティ値にアクセスしようとしています。

基本的に、そのコンピューターに64ビットバージョンのOfficeがインストールされている場合、32ビットアプリとしてインストールしないようにアプリケーションに指示しようとしています。したがって、どうにかしてアプリケーションのビット数を取得し、起動状態にする必要があります。

レジストリから Office のビット数を取得できますが、インストーラーから TargetPlatform にアクセスする方法がわかりません。

ありがとう!

4

3 に答える 3

2

ここに2つのリンクがあります:

上記のリンクから、MSI インストーラーから両方のプラットフォームをターゲットにすることはできないと推測できます。2 つのインストーラーが必要です。インストーラーのビルド方法に応じて、x86 または x64 は、すべてのファイルの場所を示す定数 ( Program Files または Program Files (x86) ) をインストーラーが解釈する方法によって異なります

実行時にインストーラーの TargetPlatform を変更することはできません。

おそらくできることは、2つのインストーラーを3番目のインストーラーにパックし、インストールされているOfficeバージョンに基づいて、サブインストーラーx86またはサブインストーラーx64のいずれかを実行して、実際にアプリケーションファイルをインストールすることです.

MSI インストーラーが最も重要でない場合は、NSISを使用します。少なくとも、MSI インストーラーを NSIS インストーラーにパッケージ化します。信じられないほど簡単です。経験から言えば、NSIS は MSI よりもはるかにクールです。

于 2010-11-12T13:45:47.910 に答える
1

インストールを開始してチェックを実行する前に、カスタム アクションを追加します。Installerクラスを使用して、カスタム アクションを実行します。イベントを使用しOnBeforeInstallてレジストリ キーを読み取り、必要に応じてビット数を確認できます。例外をスローすると、インストールが中止されますが、これを行うよりクリーンな方法があるかもしれません。

于 2010-11-19T08:57:19.077 に答える
1

この質問を数回読みましたが、あなたが何をしようとしているのかを 100% 理解しているとは言えません。32 ビット アプリケーションがあり、32 ビット Office (2010 と仮定) がインストールされている場合にのみインストールしたいですか? 64ビットオフィスがインストールされている場合、インストールしたい64ビットバージョンもありますか?

64 ビット Office がインストールされていることがわかっている場合は、定義上 64 ビット OS でなければならないため、なぜ TargetPlatform プロパティを気にする必要があるのか​​わかりません。32 ビット Office がインストールされている場合、64 ビット OS である可能性がありますが、それは本当に問題なのでしょうか? あなたは、Windows ではなく Office のビット数に関心があるとおっしゃいました。

私が読んだことから、ビットネスをプロパティにプルするAppSearchがある場合、そのプロパティを「またはInstalled」とともに使用するLaunchConditionを使用できると思います(アプリケーションをアンインストールできるようにするためにOffice が最初にアンインストールされた場合) で問題ありません。

于 2010-11-12T13:21:23.483 に答える