C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: Windowsサービスのアンインストールで失敗


(過去ログ 37 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■18815 / inTopicNo.1)  Windowsサービスのアンインストールで失敗
  
□投稿者/ asuka (43回)-(2008/05/16(Fri) 14:50:29)

分類:[C#] 


お世話になっております。

C#にてWindowsのサービスを作成し、インストーラまで作成しました。

VS2005のインストーラのプロジェクトを右クリックしてインストールし、

アンインストールしようとしたのですが悲惨な状態になってしまいました。



『この操作は現在インストールされている製品に対してのみ有効です。』

とメッセージボックスが表示されインストール先のexeが消えないのと、サービスからインストールしたサービスが消えません。

試しにコンパネからアンインストールしたところ、exeは消えたのですがサービスの一覧には残ったままです。



カスタムインストールは設定しておらず、インストール/アンインストール部分には特に何のコードも書いてません。

どのような処置をとれば正しくアンインストールされるのでしょうか?

VS2003で作成したときはアンインストールでサービス一覧からサービス名も消えたのですが・・・

とりあえず手動でも構わないのでサービス一覧からサービス名が消える方法を御存じでしたら教えて頂けると幸いです。

---
Vista Ultimate
VS2005
引用返信 編集キー/
■18822 / inTopicNo.2)  Re[1]: Windowsサービスのアンインストールで失敗
□投稿者/ 渋木宏明(ひどり) (756回)-(2008/05/16(Fri) 15:31:57)
渋木宏明(ひどり) さんの Web サイト
> とりあえず手動でも構わないのでサービス一覧からサービス名が消える方法を御存じでしたら教えて頂けると幸いです。

レジストリの

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

配下を眺めて「これだ」と確信が持てたら、そのキーを削除。

自信がないなら、書籍とかでお勉強してください。

そもそも、「サービスがどういう風にシステムに登録されるものなのか」というのをあらかじめ知っておくべきだったと思います。

引用返信 編集キー/
■18824 / inTopicNo.3)  Re[1]: Windowsサービスのアンインストールで失敗
□投稿者/ とっちゃん (292回)-(2008/05/16(Fri) 15:42:42)
とっちゃん さんの Web サイト
No18815 (asuka さん) に返信

> VS2005のインストーラのプロジェクトを右クリックしてインストールし、
>
> アンインストールしようとしたのですが悲惨な状態になってしまいました。
>
開発環境上でインストールしたのですか?

>
> 『この操作は現在インストールされている製品に対してのみ有効です。』
>
インストール後、一度でもセットアッププロジェクトがビルドされると二度と右メニューからはアンインストールできません。
そういう仕様です(VSのバージョンアップで変わることもないでしょう)。


> とメッセージボックスが表示されインストール先のexeが消えないのと、サービスからインストールしたサービスが消えません。
>
> 試しにコンパネからアンインストールしたところ、exeは消えたのですがサービスの一覧には残ったままです。
>
それは、このことから類推できます。


後の部分は、渋木さんが書いてるので、割愛してポイントだけ。

MSDNライブラリで ServiceInstaller クラスを調べてみてください。多分幸せになれると思います。

引用返信 編集キー/
■18850 / inTopicNo.4)  Re[2]: Windowsサービスのアンインストールで失敗
□投稿者/ asuka (44回)-(2008/05/16(Fri) 17:59:31)
渋木さん、とっちゃんさん。

お返事ありがとうございます。

はい、一度でもビルドするとアンインストールが出来ないことがわかりました。

渋木さんから教えてもらった方法ですが、これだけではサービスの一覧からサービスが消えず、

sc.exeを実行することでこちらは解決致しました。




ただ、アンインストール時にサービスを消したいので幸せになるためにMSDEを読み漁りつづけます。TT

とりあえずインストーラークラスを用いてUninstall()をオーバーライドしてみたのですが、

InstallerClass()とInstall()クラスは呼ばれるものの、Uninstall()だけは何故か呼ばれませんでした。

引用返信 編集キー/
■18853 / inTopicNo.5)  Re[3]: Windowsサービスのアンインストールで失敗
□投稿者/ とっちゃん (294回)-(2008/05/16(Fri) 18:22:21)
とっちゃん さんの Web サイト
No18850 (asuka さん) に返信
>
> ただ、アンインストール時にサービスを消したいので幸せになるためにMSDEを読み漁りつづけます。TT
>
MSDEは、SQL-Server 2000 時代の簡易DBの名前です。
ま、文脈で通じますが、間違ってたままだといずれ検索で失敗とかなりますよw

> とりあえずインストーラークラスを用いてUninstall()をオーバーライドしてみたのですが、
>
> InstallerClass()とInstall()クラスは呼ばれるものの、Uninstall()だけは何故か呼ばれませんでした。
>
Uninstall() のメソッドは登録されていますか?
手動で設定しないとだめだった気がします。

それと、ServiceInstaller クラスはInstaller クラスの派生クラスです(間にComponentInstallerクラスが挟まってますが)。
なので、いろいろ機能拡張されているので、サービスの登録をする場合は必ずそっちを使うようにした方がいいです。

引用返信 編集キー/
■18858 / inTopicNo.6)  Re[4]: Windowsサービスのアンインストールで失敗
□投稿者/ asuka (45回)-(2008/05/16(Fri) 19:30:10)
間違えました、MSDNでした。。。

インストーラクラスを作成し、 private ServiceInstaller serviceInstaller; private ServiceProcessInstaller processInstaller;

をnewして
Installers.Add(serviceInstaller);
Installers.Add(processInstaller);

することろまでいったのですが、Installers.Add(serviceInstaller);

を行うとインストールに失敗します。><

エラー番号2869が出て、対処もネットに載っていたのですが、
http://blogs.dion.ne.jp/surviveplus/archives/cat_5068-1.html

僕の環境はこれをしてもエラーが出続けます。TT



今日は終電がほぼ確定しそうです。。。

ああ・・・
引用返信 編集キー/
■18860 / inTopicNo.7)  Re[5]: Windowsサービスのアンインストールで失敗
□投稿者/ asuka (46回)-(2008/05/16(Fri) 20:26:19)
それと教えて下さい。

>Uninstall() のメソッドは登録されていますか?
>手動で設定しないとだめだった気がします。

とはどういうことでしょうか?

namespace TestServive
{
[RunInstallerAttribute(true)]
public partial class InstallerClass : Installer
{

  }

public override void Install(System.Collections.IDictionary stateSaver)
{ … }


public override void Unistall(System.Collections.IDictionary stateSaver)
{ … }



のようにするだけでは呼ばれないのでしょうか?

こうすることで、Install関数内でメッセージボックスは呼ばれるのですが、Uninstall関数内では呼ばれません。TT
引用返信 編集キー/
■18861 / inTopicNo.8)  Re[6]: Windowsサービスのアンインストールで失敗
□投稿者/ とっちゃん (295回)-(2008/05/16(Fri) 20:40:04)
とっちゃん さんの Web サイト
No18860 (asuka さん) に返信

> >Uninstall() のメソッドは登録されていますか?
> >手動で設定しないとだめだった気がします。
>
> とはどういうことでしょうか?
>
セットアッププロジェクトで右メニューを出すとカスタム動作があります。
その中に、InstallやUninstall をセットする場所があります。
そこにセットされているか?を確認してください。
Install まではちゃんと面倒みてるようですが、アンインストールはきちっとフォローできてないかもしれません。


で、エラー2869 ですが、VS2005 であれば、setup.exe を吐き出すようにして
そいつから呼び出してやれば、起動時に昇格しますよ。
VS2005のブートストラッパー(setup.exeのこと)は、昇格されちゃうので
それで結果的に回避できると思います。

昇格の問題だけであれば...ですけどw

引用返信 編集キー/
■18868 / inTopicNo.9)  Re[7]: Windowsサービスのアンインストールで失敗
□投稿者/ asuka (47回)-(2008/05/16(Fri) 21:31:20)
>>>Uninstall() のメソッドは登録されていますか?
>>>手動で設定しないとだめだった気がします。
>>
>>とはどういうことでしょうか?
>>
> セットアッププロジェクトで右メニューを出すとカスタム動作があります。
> その中に、InstallやUninstall をセットする場所があります。
> そこにセットされているか?を確認してください。
> Install まではちゃんと面倒みてるようですが、アンインストールはきちっとフォローできてないかもしれません。

おお、なるほど、そんな項目があったのですね。

そもそもコンパネからアンインストール時にサービスの削除もしてくれたような気がしたのですが > VS2003

2005ではしてくれないのか、そこが知りたいところなのですが御存じでしょうか?

インスト時に追加したものはファイルもディレクトリもサービスも削除していたと思ったのですが・・・



> で、エラー2869 ですが、VS2005 であれば、setup.exe を吐き出すようにして
> そいつから呼び出してやれば、起動時に昇格しますよ。
> VS2005のブートストラッパー(setup.exeのこと)は、昇格されちゃうので
> それで結果的に回避できると思います。
>
> 昇格の問題だけであれば...ですけどw

一応こちらはやってみました。

セキュリティソフトもとめてEXEから管理者権限で行ってもダメでした。><

もしかしたら他の原因かもしれません。。。

引用返信 編集キー/
■18872 / inTopicNo.10)  Re[8]: Windowsサービスのアンインストールで失敗
□投稿者/ asuka (48回)-(2008/05/16(Fri) 22:50:57)
とりあえず環境をXP Proに変えてやっております。

カスタム動作のアンインストールにインストーラークラスを追加しただけで、

インストール時に作成したレジストリ構成とサービスを削除してくれるようになりました。



最後にVISTAで動かしたいので完了まで少しペンディングとさせて下さい。

それにしてもインストール時に構成したディレクトリ情報やサービスの情報なんかはWindowsさんはどこで保持してるのか疑問です・・・

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -