2011-02-10 25 views
1

インストーラでカスタムアクションを実行しました& Windowsサービスをインストールするのにデザイナーが気に入っています。サービスがアンインストールされたときにMSIインストーラが失敗しました

カスタムアクション(またはMSI設定)で間違いを犯したとき、アップグレードプロセスが失敗することがあります。解決策は、アプリケーションをアンインストールし、新規インストールを行うことです。

しかし、サービスの「カスタムアクション」がシステムに登録されていないため、アプリケーションをアンインストールできない場合があります。 OK、おそらく問題ありません。私は、アプリケーションをアンインストールしています。問題:私のアプリはアンインストールされません。それが残っています。レジストリにサービスを手動で追加して、アンインストールプロセスを再起動する必要があります。

質問:私は設定/開発/プログラム/などが必要ですか?サービスが既に削除されているときにアンインストーラ中に失敗しないように、サービス(un)インストーラに通知します。

私のカスタムアクションは、アンインストール中にいいえです。インストール/アップグレード中にのみ、私はいくつかの設定を要求していますし、カスタム設定を行うこともできます - 私のアプリにのみ関連しています。サービスとは関係ありません。

EDIT:言及するのを忘れてしまった:2008 VSを、デフォルトのインストーラプロジェクト、無凝っ、ターゲットマシンは、Windows XP

答えて

2

ええ、それは私がVDPROJ及びます。installutilカスタムアクションを使用していないと言う多くの理由の一つだです。アンインストールカスタムアクションにtry catchブロックを置き、そのシナリオを処理する必要があります。

VMでテストしているだけで元に戻すことはできますが、これがあなたの開発者である場合は、Windows SCコマンドを使用してサービスを再作成してください。

本当にこの権利をしたい場合は、このような何かやりたい:

Augmenting InstallShield using Windows Installer XML - Windows Services

同じ概念は、あなただけのWiXは、あなたのVDPROJインストーラにマージモジュールを追加することがあります適用されます。

+0

ええ - 私は別のインストーラに切り替えるつもりですが、*ここにはすべての名前が書かれています。私の問題は、試しにキャッチできる場所が見えないことです。インストーラコンポーネントをthis.Installers.AddRange(...)で追加します。このコードは、セットアップ/インストーラープロジェクトのための素晴らしいデザイナーによって作成されました。サービスはレジストリスクリプトによって再現されます:-) – Arthur

+0

申し訳ありませんが、それはすべてプロセス外です。 Microsoftがこれらのプロジェクトタイプを非難し、代わりにInstallShield 2010 Limited Editionを無料で提供する理由の1つです。 ISまたはWiXに切り替えると助けになりますが、反パターンを扱うときは助けはありません。 –

+0

OK、私はInstallShield 2010 Limited Editionにチャンスを与えます。ありがとう!アーサー – Arthur

関連する問題