Jadi kami telah membuat layanan windows untuk memasukkan data ke aplikasi klien kami dan semuanya berjalan dengan baik. Klien telah datang dengan permintaan konfigurasi yang menyenangkan yang membutuhkan dua contoh layanan ini yang berjalan di server yang sama dan dikonfigurasi untuk menunjuk ke database terpisah.
Sejauh ini saya belum bisa membuat ini terjadi dan berharap sesama anggota stackoverflow mungkin bisa memberikan beberapa petunjuk mengapa.
Setup saat ini:
Saya telah menyiapkan proyek yang berisi layanan windows, kami akan menyebutnya AppService mulai sekarang, dan file ProjectInstaller.cs yang menangani langkah-langkah instalasi khusus untuk mengatur nama layanan berdasarkan kunci di App.config seperti itu :
this.serviceInstaller1.ServiceName = Util.ServiceName;
this.serviceInstaller1.DisplayName = Util.ServiceName;
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
Dalam hal ini Util hanyalah kelas statis yang memuat nama layanan dari file konfigurasi.
Dari sini dan seterusnya, saya telah mencoba dua cara berbeda untuk memasang kedua layanan dan keduanya gagal dengan cara yang sama.
Cara pertama adalah dengan menginstal salinan pertama layanan, menyalin direktori yang diinstal dan menamainya, lalu menjalankan perintah berikut setelah memodifikasi konfigurasi aplikasi untuk mengubah nama layanan yang diinginkan:
InstallUtil.exe /i AppService.exe
Ketika itu tidak berhasil, saya mencoba membuat proyek penginstal kedua, mengedit file konfigurasi dan membangun penginstal kedua. Ketika saya menjalankan penginstal, itu berfungsi dengan baik tetapi layanan tidak muncul di services.msc jadi saya menjalankan perintah sebelumnya terhadap basis kode yang diinstal kedua.
Kedua kali saya menerima output berikut dari InstallUtil (hanya bagian yang relevan):
Menjalankan instalasi yang ditransaksikan.
Memulai tahap penginstalan.
Menginstal layanan Layanan Aplikasi Dua ... Layanan Aplikasi Layanan Dua telah berhasil diinstal. Membuat Layanan Aplikasi sumber EventLog Dua di Aplikasi log ...
Pengecualian terjadi selama fase Instal. System.NullReferenceException: Referensi objek tidak disetel ke turunan objek.
Fase Rollback penginstalan dimulai.
Mengembalikan log peristiwa ke keadaan sebelumnya untuk sumber App Service Two. Layanan Aplikasi Layanan Dua sedang dihapus dari sistem ... Layanan Aplikasi Layanan Dua berhasil dihapus dari sistem.
Fase Rollback berhasil diselesaikan.
Penginstalan yang ditransaksikan telah selesai. Instalasi gagal, dan rollback telah dilakukan.
Maaf untuk posting yang bertele-tele, ingin memastikan ada informasi yang cukup relevan. Bagian yang sejauh ini membuat saya bingung adalah menyatakan bahwa penginstalan layanan selesai dengan sukses dan hanya setelah itu pergi untuk membuat sumber EventLog yang NullReferenceException tampaknya dilemparkan. Jadi, jika ada yang tahu apa yang saya lakukan salah atau memiliki pendekatan yang lebih baik, itu akan sangat dihargai.
http://journalofasoftwaredev.wordpress.com/2008/07/16/multiple-instances-of-same-windows-service/
. Anda dapat memasukkan kode ke dalam penginstal untuk mendapatkan nama layanan yang Anda inginkan ketika Anda menjalankan installutil.