2010-11-19 21 views
0

Windows hizmetlerini kaldırma ve yeniden yükleme konusunda sorun yaşıyorum. bazen hizmet için MSI paketini kaldırdığımda (hizmeti durdurduktan ve hizmet yönetimi konsolunu kapattıktan sonra bile), hizmet kaldırılmaz ve "installUtil" komutunu çalıştırırsam, hizmet devre dışı bırakılır, ancak kaldırılmaz konsoldan. Sonra "sc s service.exe" yi çalıştırırsam, "servis silinmek üzere işaretlenir" hatası alırım. Bu hata oluştuğunda, sahip olduğum tek seçenek, kurulduğu her yerde iş istasyonunu veya sunucuyu yeniden başlatmaktır. bazen iyi çalışıyor ve bazen düzgün şekilde kaldırmıyor. Kaldırma işleminin her zaman çalıştığından nasıl emin olabilirim? kaldırma neden bu kadar acı verici? Geliştirme sırasında, servisin yeni sürümünü yüklemek için hizmeti birkaç kez yeniden yüklemem gerekiyor ve makineyi yeniden başlatmaya gerek kalmadan servisi kolayca yeniden kurmanız yararlı olacaktır.
şimdiden teşekkürler.Windows hizmetinin kaldırılması bazen makinenin yeniden başlatılmasını zorluyor

+1

Kontrol paneli ile msi veya installutil yerine kaldırmayı denediniz mi? Hizmetlerimi her zaman bu şekilde kaldırırım ve henüz bu sorunla karşılaştım. – jlafay

+1

OnStop() isteğini aldığınızda her zaman sona ermediğiniz bir iş parçacığında tahmin ediyorum. –

cevap

2

Test sırasında servisimi sürekli olarak kurduğum, yeniden kurduğum ve kaldırdığımda benzer bir soruna rastladım. Hizmetin kaldırılmasından önce MSI'nın yeniden inşası ile ilgili olduğunu düşünüyorum. Program Ekle/Kaldır iletişim kutusundan her zaman kaldırılması bundan kaçınmalıdır, ancak bu biraz güçlüktür. Wix kurulum projemi üç şey yapmak için değiştirdim:

  • MSI, hizmeti başlatmak/durdurmak için ayarlanmıştır. Bir örnek here.
  • Geçerli sürüm veya yeni bir sürüm zaten yüklüyse yüklemeyi durdurmak için özel bir eyleminiz var. this koduna dayanmaktadır.
  • Masaüstünde bir yükleme kısayolu oluşturun. Bir örnek here.
  • 0

    Belki de hizmetiniz işlenmemiş bir hataya yakalandığından kapatılıyor olabilir. Eğer bir kayıt varsa, oraya hiçbir şey atılmadığını görmeye çalışın. Aksi takdirde, bir günlük mekanizması (örneğin log4net) ekleyebilirim. Bir günlüğe kaydetme mekanizması eklemek bir seçenek değilse, chezy525'in çözümü işe yarayacak gibi görünüyor.

    İlgili konular