クライアント マシンに Windows サービスをインストールするための MSI があります。Windows サービスは、当社サーバーの Web サービスを呼び出して操作を実行します。最初は、MSI と Web サービスの両方が .NET 2.0 フレームワークを使用して構築されました。
前四半期に、システムを .NET 4.0 にアップグレードしました。私たちのWebサービスはまだASP.NET、つまりasmxです(WCFではありません)。また、MSI をインストールするための前提条件としてフレームワーク 4.0 を設定しました。
クライアントの 1 人がこの問題を報告しました。
クライアントは .NET Framework 2.0 を使用しており、古いバージョンの MSI がシステムにインストールされていました。MSI の .NET Framework 4.0 バージョンをインストールしようとすると、(前提条件のため) Framework 4.0 をインストールするように求められました。フレームワークのインストールが完了したら、MSI をインストールしようとしたところ、このエラーが発生しました。誰かが解決策を教えてください。必要に応じて詳細を提供できます。
編集1:
さらに調査したところ、それが私の AppName.installstate ファイルであることがわかりました。アンインストールするとこのファイルが削除されますが、アップグレードでは削除されません。ファイルはインストール ディレクトリにあります。よく見ると、ファイルの内容に「 http://schemas.xmlsoap.org/soap/envelope/:Envelope 」が表示されます。どんなポインタでも大歓迎です。
編集2:
カスタム アクション インストールは AppName.installstate ファイルを作成し、カスタム アクション アンインストールはファイルを削除します。私の場合、このファイルには何もしない MSI アップグレードを行っています。2.0 と 4.0 (どちらも手動でインストール) の installstate ファイルを比較すると、XML 構文、スキーマ、およびコンテンツに大きな違いがあることがわかりました。その理由は、シリアル化エラーが発生していることです。ここで、アップグレード時に AppName.installstate が上書きされない理由を知る必要があります。多くのグーグルを行っていますが、どこにも着陸していません。MSI インストール ログを見ましたが、有用な情報はありませんでした。