13

[VS2008 に組み込まれた .vdproj MSI ジェネレーター プロジェクト] System.Configuration.Install.Installer を Visual Studio 2005 から 2008 にアップグレードしましServiceProcessInstallerServiceInstaller。またはサービスを停止するか、子供を登録します)

RemovePreviousVersionsは に設定されてtrueおり、 と を変更しVersionていProductCodeます。これにより、インストール中にエラーが発生します。

「エラー 1001: 指定されたサービスは既に存在します」

グーグルは何かを生み出します(しかし、今までSOではありません):- 「指定されたサービスはすでに存在します」
というGoogle /thread/b2d1bd22-8499-454e-9cec-1e42c03e2557/ ただし、これは基本的な質問には答えません:-

ユーザーが次のいずれかを選択できる場合:
a) 同じインストール場所、
または b) 異なるインストール場所
. または、同じ名前の同じサービスの v1.0.1 を v1.0.2 にアップグレードするという基本的なシナリオ (つまり、署名) でこれを解決するために必要なコード変更以外に何かありますか?

(AIUI の厳密な名前付けは、古いインストーラーに重要なアンインストール手順があり、新しいインストーラーにはない場合にのみ機能します。)

VS 2008 で新しいインストーラーを生成しましたが、うまくいきません。

Version今のところ、私の回避策は、との更新を停止しProductCode、既にバージョンがインストールされていると言われたら、ユーザーに手動でアンインストールを強制することです。

divo の精査のおかげで補遺: 最も簡単に機能するハックは、「インストール ステップが呼び出され、そのアップグレードがアップグレードである場合は、最初にサービスのアンインストール ステップを呼び出す」ということですが、公式に祝福された適切な回答が欲しいです! (たとえば、アップグレード中にサービスの名前が変更されたときに、単純なハックはどのように対処しますか?)

4

2 に答える 2

1

サービス(セットアップ)は、サービスをアンインストールするためのカスタムアクションを提供しますか?

アップグレードとは、新しい製品がインストールされる前に、以前にインストールされた製品がアンインストールされることを意味します。エラーの原因は、古いサービスを削除できないためだと思います。

サービスが.NETで記述されている場合は、次の記事が役立つ場合があります:http: //www.codeproject.com/KB/install/InstallService.aspx

于 2008-12-16T11:13:40.467 に答える