5

私はMSIの初心者です。MSI の出力プロジェクトである Windows サービスを作成しました。私のローカル マシンは 64 ビットの Win 7 マシンです。インストールしようとしているサーバーは、VM で実行されている Win 2008 32 ビット サーバーです。.NET 4 VS2010 を使用しています。

現在、私のサービスの exe はリリース ターゲット = Config Manager の任意の CPU としてビルドされています。MSI には、プラットフォームを変更するオプションがありません。

ローカルの 64 ビット Win7 マシンに問題なくインストールできます。ただし、32 ビットの Windows 2008 にインストールしようとすると、次のエラーが表示されます。

サービスのターゲットをx86に変更してexeとセットアップを再構築しようとしましたが、同じ結果が得られます。このサービスは、多数のクラス ライブラリを参照します。それらを Any Cpu から x86 に変更して、違いがあるかどうかを確認しました。

また、セットアップ プロジェクトとサービスの前提条件が .NET Framework 4 (x86 および x64) に設定されていることも確認しました。Prerequisites Windows Installer を 3.1 から 4.5 に変更する実験も行いました。

何も機能していないようです。何か案は?ありがとう。

4

3 に答える 3

7

私の場合、HKLM/SOFTWARE (64 ビット) レジストリ ノードの下にエントリを指定するだけで、32 ビットの Win7 ホストでインストールに失敗しました。

症状は、無料の統合 InstallShield 製品を使用した VS 2010/2013 でも同じでした。インストール中のプロジェクトで任意の CPU 設定を維持できました。MSI セットアップ プロジェクトに必要なその他の特別な設定はありません。

于 2014-05-10T09:54:25.967 に答える
6

わかりました、TargetPlatform がどこにあるのかわかりました。他の VS プロジェクトとは異なります。

TargetPlatform にアクセスするには、MSI プロジェクトを選択して F4 キーを押します。ビオラ![プロパティ] グリッド内に、[TargetPlatform] フィールドとオプション (x86、x64、Itanium) があります。注: これは、プロジェクトを右クリックし、コンテキスト メニューから [プロパティ (Alt-Enter)] 項目を選択すると取得される、まったく異なるプロパティ セットです。「Alt-Enter」プロパティと「F4」プロパティ。

残念ながら、これは他の VS Project プロパティとは異なります。通常、プロジェクトのプロパティはメイン ウィンドウで設定され、ここでは "F4" プロパティ グリッドでは設定されません。したがって、他のスレッドがプロジェクトのプロパティについて議論したとき、これは異なるため、私は混乱し続けました.

このよう

VS の ConfigurationManager は MSI に影響しません。すべての依存アセンブリを「任意の CPU」に保持しています。また、「Launch Conditions」ウィンドウで正しいフレームワークをターゲットにすることを忘れないでください (プロジェクトを右クリック -> View -> TargetConditions)。

お役に立てれば。

于 2013-02-27T19:41:45.140 に答える