[VS2008 に組み込まれた .vdproj MSI ジェネレーター プロジェクト] System.Configuration.Install.Installer を Visual Studio 2005 から 2008 にアップグレードしましServiceProcessInstaller
たServiceInstaller
。またはサービスを停止するか、子供を登録します)
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 の精査のおかげで補遺: 最も簡単に機能するハックは、「インストール ステップが呼び出され、そのアップグレードがアップグレードである場合は、最初にサービスのアンインストール ステップを呼び出す」ということですが、公式に祝福された適切な回答が欲しいです! (たとえば、アップグレード中にサービスの名前が変更されたときに、単純なハックはどのように対処しますか?)