• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 23.04.2016 00:55:33C programlama 2 oyun
  • 20.04.2016 16:34:41Local Database
  • 15.04.2016 14:26:15Fatura kayıt işlemi
  • 21.03.2016 01:55:30C# problem

Popüler Sorular

  • 27.05.2012 05:49:50Asp.Net ile Date time alana veri ekleyemiiyorum ?
  • 2.04.2012 00:45:18.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 12.05.2012 08:44:49Acil Yardım
  • 27.05.2012 13:46:51veri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LINQ
  • LibreOffice
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

C# ile Windows Service projesi oluşturma, kodlama, yapılandırma (konfigürasyon), derleme, servisi bilgisayara (sunucuya) yükleme (install) ve kaldırma (uninstall), Windows Service projesini debug etme ve projeyi Setup haline getirme işlemlerini öğrenelim.

17.12.2013

Yazar: Hakan Keskin (Google+)

Kategori: C#.Net

66943

.NET WINDOWS SERVICE

Windows servisler, arka planda çalışan, bir arayüze sahip olmayan, start-type özelliği otomatik olarak ayarlandığında, sunucunun yeniden başlatılması durumunda, kendiliğinde çalışan, çalışması için sunucuya login olmayı gerektirmeyen ve işleri otomatik olarak yapan, son derece kullanışlı uygulamalardır.

Örneğin, belli aralıklarla peryodik olarak veya bazı uyarılarla uyarı anında; sistem üzerinde veya veritabanı üzerinde işlemler yapılması, veya diğer uygulamalar ile çeşitli şekillerde (örneğin web servis aracılığı ile) bağlantı kurulması istendiğinde, en uygun çözüm yöntemlerinden birisi windows servisler olacaktır.

Şimdi, .Net ile bir servis uygulamasının ne şekilde oluşturulduğunu, nasıl debug edildiğini ve uygulamaya nasıl alındığını detaylarıyla görelim.

PROJE OLUŞTURMA

Windows Service Projesi Oluşturma

Şekil 1

Yukarıda şekil 1 ile gösterildiği gibi “File > New > Project” menüsüne tıklayarak, altta şekil 2 ile gösterilen yeni proje (New Project) ekranını açın.

Visual Studio ile Windows Service Projesi Oluşturma

Şekil 2

Şekil 2 ile gösterilen ekranda, Visual C# > Windows menüsünü seçin. Açılan şablonlardan (teplates) “Windows Servis” proje tipini seçin. “Name”, “Location” ve “Solution name” bilgilerini girdikten sonra “OK” butonuna basarak projeyi oluşturun.

Not: Çalışmak istediğiniz “framework”ü listeden seçmeyi unutmayın.

Proje oluşturulduktan sonra çalışmak istediğiniz “framework”ü değiştirmek için, “Solution Explorer” penceresinde bulunan projeye sağ tıklayıp, açılan menüden“Özellikler (Properties)” menüsü tıklayarak, ya da, proje seçiliyken “Alt + Enter” tuşlayarak, proje özellikleri sayfasını açın. Burada, sol tarafta bulunan “Application” sekmesindeki “Target framework” aracılığı ile, framework sürümü değiştirilebilir. Bknz.Şekil 3

Windows Service projesinin target framework ayarını tanımlama

Şekil 3

 

KODLAMA

Proje oluştuktan sonra, “Soluton Explorer” penceresi şekil 4 ile gösterildiği biçimde olacaktır.

Windows Service proje dosyaları (Solution Explorer)

Şekil 4

“Service1.cs” dosyasını seçerek, klavyeden F7 tuşuna bastığınızda, servise ait kod sayfası açılacaktır. Kod sayfası altta şekil 5 ile gösterilmiştir.

Windows Service Service1 sınıfı

Şekil 5

Yukarıdaki şekilde de görüldü gibi, servise ait 2 adet event otomatik olarak gelir. “OnStart” eventi, servis çalıştırıldığında devreye girerken, “OnStop” eventi servis durdurulduğunda devereye girer. “OnStart” eventinde bulunan “args” parametresi sayesinde, servisi çalıştırma esnasında parametre geçilebilir. Bu şekilde, servis, anlık olarak farklı parametreler ile çalıştırılabilir.

Şimdi, bu iki eventi kullanarak ne şekilde servis programlaması yapıldığını inceleyelim.

Bir windows servis içinde sadece bir tek iş yapılabileceği gibi, birden fazla iş yapılması da istenebilir. Servis başlatıldığında sadece bir tek iş yapılacak ve o iş bittikten sonra servisin işi bitmiş olacak ise, “OnStart” eventinin içinde bir method çağrısı yapılması yeterlidir. Ancak, genellikle istenen, servisin belli peryotlarda, belirlenen işleri paralel olarak yapmasıdır. Bu nedenle, öncelikle servisin belli zaman dilimlerinde veya gelen belli uyarılarla işlem yapması temin edilmelidir. Sonra da, birden fazla iş yapılacak ise, bu işlerin paralel şekilde yapılması sağlanmalıdır.

Servisimiz belli zaman dilimlerinde belirlenen işleri yapacak ise, en uygun yöntem bir zamanlayıcı (timer) tınımlamaktır.

Servisimiz, kendisine gelecek olan uyarıları dinleyecek ve bu uyarılara göre bazı işleri yapacak ise, bu durumda, uygun yöntem sonsuz bir döngü içinde kalıp uyarıları dinlemek olacaktır. Dinlenecek uyarılar, bir seri ya da paralel porttan gelebileceği gibi, ethernet’ten, USB portundan ya da bilgisayar üzerindeki herhangi bir aygıttan gelebilir.

Biz örenğimizde, en çok kullanılan durum olan, belli peryotlar ile birden fazla işlemin yapılması durumunu ele alacağız.

Şimdi öncelikle, istenen zaman dilimlerinde olup olmadığımızı kontrol edeceğimiz bir zamanlayıcı (timer) oluşturulam. Burada bilnmesi gereken en önemli noktalardan birisi şudur. Windows servis yazarken, Visual Strudio’nun tools penceresinden, sürükle-bırak ile herhangi bir kontrolün eklenemeyeceğidir. Özellikle, görsel kontrollerin hiçbirisi windows servis üzerinde oluşturulamaz. Ama, görsel olmayan kontroller, kodsal olarak oluşturulup kullanılabilir. Biz de, görsel olmayan zamanlayıcımızı alttaki şekilde oluşturacağız.

Windows Service projesinde Timer kullanımı

Şekil 6

Şekil 6 ile gösterildiği gibi, “Tmr1” isimli bir zamanlayıcı oluşturuldu. Zamanlayıcının sınıf (class) sevisinde tanımlanmasının nedeni, class içindeki herhangi bir method içinde kontrol edilebilmesini sağlamak. İhtiyacınıza göre, siz zamanlayıcıyı method içinde de tanımlayabilirsiniz.

Daha sonra, servisin “OnStart” eventi içinde zamanlayıcı için bir örnek (instance) oluşturuluyor ve bazı özellikleri belirleniyor. Örneğin, zamanlayıcının hangi peryotlarda devreye gireceği “Interval” özelliğine milisaniye cinsinden bir değer verilerek belirleniyor. Örneğimizde, bu değer 60000, yani 1 dk.olarak belirlenmiştir. Ardından da zamanlayıcı “Start()” methodu çağrılarak çalıştırılıyor.

Dikkat edilirse son satırda bir event tanımlaması yapılmıştır. Bu şekilde, zamanlayıcı devreye girdiğinde hangi event’in tetikleneceği belirlenmiştir. Bizim örneğimizde, zamanlayıcının tetikleyeceği event “private void Tmr1_Elapsed(object sender, EventArgs e)” şeklinde verilmiştir. Bu event içine gerekli kodlar yazılarak, istenen işlemler yaptırılabilir.

Zamanlayıcımız devreye girdiğinde, gerekli işleri yapacak birden fazla methodun, paralel (Multi-Thread) olarak nasıl çalıştırılacağı altta şekil 7 ile verilen kod örneğinde gösterilmiştir.

Windows Service projesinde multi-threading kullanımı

Şekil 7

Yukarıdaki şekilde de görüldüğü gibi, önce işlem için ilgili zamanın gelip gelmediği kontrol ediliyor. Zaman gelmiş ise, birbirinden farklı iki ayrı method paralel olarak devreye sokuluyor. Bu noktadan sonra artık bu iki method paralel olarak çalışacak ve istenen işleri yapacaktır.

Servis içinde birden fazla zamanlayıcı kullanılabilir ve her bir zamanlayıcının birden fazla methodu paralel (multi-thread) olarak çalıştırması sağlanabilir. Burada dikkat edilmesi gereken konulardan birisi, zamanlayıcılar devreye girip ilgili methodları aktive ettikten sonra, zamanlayıcıların çalışmaya devam edip etmeyeceğine karar vermektir. Zamanlayıcıların method çağrılarını yaptıktan sonra durması isteniyor ise, “Enabled” özelliği “false” yapılmalıdır. Ancak, zamanlayıcının işlem bittikten sonra tekrar çalışmaya başlaması için uygun yerde bu değerin tekrar “true” yapılması gerekir.

YAPILANDIRMA

Servisi “app.config” aracılığı ile konfigüre edebilirsiniz. Bu şekilde, koda müdahele etmeden pek çok parametreyi değiştirip, servisin çalışma şekline müdahele edebilirsiniz. Bunun için, servisi durdurup, ilgili config dosyası içinde istediğiniz değişikliği yapıp, ardından servisi tekrar çalıştırmanız yeterli olacaktır. Örneğin, veritabanı bağlantısı için “connectionStrings” tag’i ve bazı parametreleriniz için “appSettings” tag’i, şekil 8 ile gösterildiği şekilde eklenebilir.

Windows Service projesi app.config yapılandırması

Şekil 8

DERLEME

Proje derlendiğinde, “Debug” klasörü altında bazı dosyalar oluşturulur. Oluşturulan dosyalar şekil 9 ile gösterilmiştir. Eğer projenize başka bazı referanslar eklenmiş ise, o nesneler de bu dizinde görünecektir. Örneğin, veritabanı işini yapan “DAL.dll” isimli bir nesnemiz varsa ve referans edilmiş ise, bu durumda alttaki şekilde gösterilen listeye “DAL.dll” dosyası da eklenecektir.

Windows Service projesini derleme

Şekil 9

Burada önemli olan ilk üç dosyadır. İlki, bizim çalıştıracağımız “exe” dosyası; ikincisi, ayarlarımızın olduğu “config” dosyası ve üçüncüsü, debug işlemlerinde kullanılacak olan “pdb” dosyasıdır. Remote debug yapılmak istendiğinde, proje debug modda derlenerek kurulmalı ve uygulama dizini altına pdb uzantılı dosyalar elle atılmalıdır. Remote Debug ile ilgili detay bilgi için, “Remote_Debugging” konusunda daha önce yazmış olduğum makaleye bakabilirsiniz.

YÜKLEME (INSTALL)

Windows servis projeleri, windows forms veya web projeleri gibi doğrudan çalıştırılarak debug edilemez. Servisin öncelikle Install edilip çalıştırılması gerekir. Install işlemi için:

Projedeki “Service1.cs” isimli servis dosyasına çift tıklayın. Altta şekil 10 ile gösterilen ekran görüntülenecektir.

Windows Service projesini yükleme (install)

Şekil 10

Açılan ekrandaki boş bir alana mouse sağ tuşu ile tıklayın ve açılan menüden “Add Installer”a tıklayın. Bknz.Şekil 11.

Installer ekleme (Add Installer)

Şekil 11

Daha sonra, altta şekil 12 ile gösterilen ekran açılacaktır.

Service Installer özellikleri (Properties)

Şekil 12

Ekrandaki “serviceInstaller1”e mouse sağ tuşu ile tıklandığında çıkan menüde “Properties”i seçin. Şekil 13 ile gösterildiği biçimde bir pencere açılacaktır.

Service Installer özellikleri

Şekil 13

  1. DelayedAutoStart: Bu alanın öntanımlı (default) değeri “false” şeklindedir. Bu değer “true” yapıldığında, “StartType” özelliği “Automatic” seçilmiş ise veya servisin başlama tipi sonradan “Automatic” olarak değiştirilmiş ise; servis, sunucunun restart olması durumunda otomatik, ama bir miktar gecikmeli olarak başlar. Bu seçenek, servisiniz, daha önce başlamasını beklediğiniz bir başka servise bağlı olduğunda seçilebilir, kullanılışlı bir özelliktir.
  2. Description: Bu kısıma servisinizin ne iş yaptığı ile ilgili kısa bir açıklama girebilirsiniz.
  3. DisplayName: Bu alana yazacağınız isim, “Services” listesinde görünecek olan isimdir. O nedenle, var olan bir servis ismi vermemeye ve ilk bakışta ne ile ilgili olduğunu anlatmaya yetecek bir isim seçilmesinde fayda vardır. (Biz örneğimizde bu alana “WinSvcDemo” ismini vereceğiz).
  4. ServiceName: Bu alana yazılan isim, “Services” listesinde bulunan servisinizin “Properties” sayfasını açtığınızda, o sayfadaki “Service Name” kısmında görünecek olan isimdir.
  5. ServicesDependedOn: Servisinizin başka servislere bağımlılığı varsa, bu alana o servislerin isimleri girilir. Bu durumda, bu alana girdiğiniz servisler çalışmaya başlamadan, sizin servisiniz çalışmaya başlamaz.
  6. StartType:
    1. Automatic: Servisiniz otomatik olarak başlar.
    2. Manuel: Servisinizi “Services” listesine giderek kendiniz elle başlatmak zorundasınız.
    3. Disabled: Servisiniz devre dışı kalır.

Gerekli ayarlamaları yaptıktan sonra artık servisimizi install edebiliriz.

Visual Studio komut satırı Command Prompt

Şekil 14

Servisimizi Install etmek için, yukarıda şekil 14 ile göstrildiği biçimde, bir command penceresi açılır (Start > All Programs > Microsoft Visual Strudio 2010 > Visual Studio Tools > Visual Studio Command Promt (2010)).

Açılan commad penceresine “installutil assamly path and name” formatında bir komut yazılarak install işlemi gerçekleştirilir. Şekil 15, 16 ve 17.

Visual Studio Command Prompt ile Windows Service yükleme​

Şekil 15

Windows Service kullanıcı adı ve şifresi

Şekil 16

Yukarıdaki komut yazılıp “Enter” yapıldıktan sonra, şekil 16’da gösterildiği gibi bir login ekranı gelebilir. Bu durumda kullanıcı adı ve şifrenizi girerek login olun. Bir domain içinde çalışıyorsanız, kullanıcı adınızın başına domain adını yazmayı unutmayın. Ayrıca, servis install işlemini yapabilmeniz için, bu işlemin yapılacağı bilgisayarda admin yetkisine sahip olmanız gerekir.

Login işleminde sonra, işlemin başarılı bir şekilde tamamlandığını bildiren satırlar gelecektir. Şekil 17.

Windows Service başlatma

Şekil 17

Artık servisimiz install edildi. Bunu görmek için, Start(başlat) altındaki arama alanına services yazarak veya “Control Panel  > Administrative Tools” tıklayarak açılan sayfadan, “Services” listesini açın ve “serviceInstaller1” özelliklerini belirlerken “DisplayName” özelliğine verdiğiniz ismi listeden bulun. Biz örneğimizde “WinSvcDemo” adını vermiştik. Artık bu isimde bir servisi Services listesinde görebiliyor olacağız.

Servislerden (services.msc) Windows servisini başlatma

Şekil 18

Servisimizi yukarıda şekil 18’de gösterildiği gibi, Services listesinde görebiliyoruz. “serviceInstaller1” özellikleri arasındaki “StartType” özelliğini “Manuel” olarak seçmiş olduğumuz için, servisimiz stoped durumunda. Servisi başlatmak için, üzerine mouse sağ butonu ile tıklayıp, açılan menüden “Start” komutunu vermemiz gerekiyor. Ayrıca, servisin “StartType” özelliği, sevis özellikleri sayfasından değiştirilebilir. Şekil 19.

Windows servisini yapılandırma

Şekil 19

YÜKLEMEYİ KALDIRMA (UNINSTALL)

Servisi kaldırmak için (uninstall) commad penceresine “installutil /u assamly path and name” formatında bir komut yazılır. Bknz. Şekil 20 ve 21.

Windows Service kaldırma

Şekil 20

Windows Service kaldırma

Şekil 21

İşlem sonunda “The uninstall has completed” şeklinde bir mesaj alınmalıdır. Bu mesajı aldıktan sonra, servis listesinden kontrol edildiğinde, az önce install ettiğimiz servisin artık listede olmadığını görürürüz.

DEBUG

Servis debug işlemi için önce, yukarıda anlatıldığı şekilde servis install işlemi yapılır ve servis çalıştırılır. Ardından servis projesi, çalışmakta olan servise attach edilir. Attach etme işlemi, altta şekil 22 ve 23 ile gösterilmiştir.

Windows servisini debug etme (Attach to Process)

Şekil 22

Şekil 22’de gösterildiği gibi “Attach to Process” tıklanarak altta, şekil 23 ilşe gösterilen “Attach to Process” ekranı açılır.

Bu ekranda, servisimizin gösterim ismi (DisplayName), “Available Processes” listesindeki “Process” kolonuna bakılarak bulunur ve üzerine çift tıklanarak veya “Attach” butonu kullanılarak attach işlemi yapılır.

Bu noktadan sonra artık, ilgili yerlere break-point konularak debug işlemi yapılabilir.

Not: “Attach to Process” ekranındaki “Available Processes” listesinde servisi göremezseniz, listenin altında bulunan “Show process in all sessions” seçeneğinin işaretli olup olmadığını kontrol edin. İşaretli değilse işaretleyin ve Refresh butonuna tıklayın.

Windows servisini projeye attach etme

Şekil 23

Servisi start etmeden attachment işlemi yapılamayacağından, servisin “OnStart” eventine break-point koyarak oradan debug işlemine başlanması mümkün değildir. Onun yerine “Tmr1_Elapset” event’ine veya işlemleri yapan ilgili method’lara break-point koyup debug başlatmak doğru olacaktır. Debug sırasındaki görüntü şekil 24 ile gösterilmiştir.

Windows service projesini debug etme - breakpoint

Şekil 24

SETUP PROJESİ HAZIRLAMA ve KURULUM

Servisimizi hazırladıktan sonra, başka bir bilgisayara, ya da sunucuya kurmak için, yapılması gereken öncelikli iş, bir setup hazırlamaktır. Bunun için çeşitli araçlar kullanılabilir. Visual studio’nun da bize sunduğu bir imkan var ve şimdi o imkanla setup dosyamızı nasıl hazırlayacağımızı göreceğiz.

Öncelikli işimiz, yeni bir setup projesi oluşturmak. Oluşturacağımız setup projesi ayrı bir solution altında olabileceği gibi, servis projemizin bağlı olduğu solution içinde de olabilir. Aslında ikinci yöntem, yönetilebilirlik açısından daha kullanılışlıdır. Bu nedenle, biz de setup projemizi, servisimizin altında bulunduğu mevcut solution altına oluşturacağız.

Altta şekil 25 ile de gösterildiği gibi; solution üzerine mouse ile sağ tıklıyoruz ve açılan menüden “Add > New Project” seçiyoruz.

Windows Service Setup hazırlama

Şekil 25

Açılan “Add New Project” ekranında; şekil 26 ile gösterildiği gibi, “Other Project Types > Setup and Deployment > Visual Studio Installer” proje tipini seçiyoruz ve listelenen projeler arasından “Setup Project”i seçip, projeye bir isim veriyoruz. “OK” butonuna tıklayarak projemizi oluşturuyoruz.

Bu ekranda “.NET Framework” sürümünü doğru şekilde seçmeyi unutmayın. Servis projemizi framework 4.0 ile hazırladığımızdan, setup projesini de aynı .Net framework sürümü ile hazırlamakta fayda var.

Ayrıca setup projelerinize isim verirken, setup’ını oluşturduğunuz projenin adını yazıp, sonuna “_Setup” eklemek, takip ve yönetim açısından size kolaylık sağlayacak, ayrıca bir standardınız olacaktır.

Visual Studio'da Setup projesi oluşturma

Şekil 26

Setup projenizi oluşturduktan sonra solution klasörüne gittiğinizde, altta şekil 27 ile verilen ekran görüntüsü elde edilir.

Windows Service projelerinin klasör görünümü

Şekil 27

Setup projemizi oluşturduktan sonra, oluşan projenin üzerine mouse ile sağ tıkladığımızda gelen menüden “Add > Project Output”u seçin. Bknz.Şekil 28.

Setup projesine dosya ekleme

Şekil 28

“Add Project Output Group” isminde bir ekran açılacaktır. Bu ekran üzerinde; Project kısmında, servis projenizi seçin (bizim projemiz WinSvcDemo). Hemen altındaki listeden “Primary output”u seçin ve “OK” butonuna basın.

Şekil 29

Tekrar projenin üzerine mouse ile sağ tıklayın ve gelen menüden “View > Custom Actions” seçin. Bknz.Şekil 30.

Setup projesine custom action ekleme

Şekil 30

“Custom Actions” seçildikten sonra, şekil 31’de görüldüğü gibi bir ekran açılacaktır. Bu ekrandaki “Custom Actions” üzerine mouse ile sağ tıklayıp, “Add Custom Action”ı seçin.

Setup projesine yeni Custom Action ekleme

Şekil 31

Açılan sayfadan, uygulamanın klasörünü seçin. “File System on Target Machine” seçili olarak gelir. Seçili gelmez ise, bu seçeneği seçili hale getirin ve “OK” butonuna basın. Bknz.Şekil 32.

Şekil 32

Aynı sayfadaki listede “Primary output from WinSvcDemo(Active)” görünmelidir. Görünmüyor ise, “Add Output” butonuna tıklayarak, açılan “Add Project Output Group” ekranındaki listeden “Primery output” seçin. Bknz.Şekil 33.

Şekil 33

“Primary output from WinSvcDemo(Active)” seçilip “OK” butonuna tıklandığında; “Custom Actions” altında bulunan, “Install, Commit, Rollback, Uninstall” klaöslerinin herbisinin altında “Primary output from WinSvcDemo(Active)” görünecektir. Bknz.Şekil 34.

Şekil 34

Bu işlemlerin arıdından, setup projesinin altındai “Detected Dependencies”e mouse ile sağ tıklayıp, “Refresh Dependencies”e tıklayın. Bknz.Şekil 35.

​

Şekil 35

Bu işlem yapıldığında, servis projenize referans ettiğiniz tüm bileşenler “Detected Dependencies” altında görünecektir. Servisinize yeni bir referans ekler veya referans çıkartırsanız, yukarıdaki işlemi tekrarlamanız gerekir.

Bu nokradan sonra, Setup projesini build ettiğinizde “Debug” klasörü altında “setup.exe” ve “WinSvcDemo.msi” isimli iki dosya oluşacaktır. “setup.exe”, dosyası “msi” uzantılı diğer dosyayı çağırır. Bu nedenle, setup işlemi için hangi dosyanın çalıştırıldığının bir önemi yoktur.

Herhangi bir ayarlama yapılmadığında, kurulum dosyaları öntanımlı (default) ayarlar ile oluşturulur. Ama istersek bazı ayarları değiştirebiliriz.

Bunun için; “Solution Explorer” pencesinde setup projesini seçin ve proje seçiliyken “Properties” sekmesine geçin. Ya da klavyeden “Ctrl +W,P” tuşlayın. Aynı sekmeyi, “View > Properties Window” menüsüyle de açabilirsiniz.

Properties sekmesinde pek çok ayar olduğunu göreceksiniz. Örneğin;

  • “Author” özelliğine firmanızın ismini ya da kendi isminizi yazabilirsiniz. Biz şimdilik buraya “ServisDemo” Yazalım. 
  • “Localization” özelliği ile dili Türkçe yapabilirsiniz.
  • “Manufacturer” özelliğine “ServisDemo Firmasi” yazalım.
  1. “Remove Previous Version” özelliğine “true” değeri verilirse, her yeni sürüm kurulduğunda, eski sürüm otomatik olarak kaldırılır.
  • “Version” özelliğinin, her değişiklikte değiştirilmesinde fayda vardır. Bu şekilde sürümleri ve sürümler arası farkları kolayca takip edebilirsiniz.
  1. “InstallAllUsers” özelliğine “true” değeri verilirse, kurulum o bilgisayarı ya da sunucuyu kullanan her bir kullanıcı için kurar ve kurulum wizard’ında bununla ilgili seçenek otomatik seçili gelir. Ama istenirse kurulum sırasında değiştirilebilir.

Gerekli ayarlamalar yapıldıktan sonra tekrar build alırsanız, yeni setup dosyaları oluşturulacaktır. Bundan sonra, “msi” uzantılı dosyayı, kurulumun yapılacağı bilgisayara ya da sunucuya taşıyıp çalıştırmanız yeterli. Kurulumdan sonra, “Services” listesine servisinizin eklendiğini kontrol edin ve eğer “StartType” manuel veya Diasbled olarak seçilmiş ise, servisinizi elle başlatın. Artık, kendi kendine çalışan bir windows servisiniz oldu.

Yazar Hakkında

Hakan Keskin

Hakan Keskin

www.yazilimdilleri.net

1997 yılında Elektrik-Elektronik Mühendisliği bölümünden mezun oldu. 2002 yılından beri profesyonel olarak yazılım geliştiriyor. Çeşitli firmalarda; araç takip, personel devam kontrol, otopark otomasyonu, çevre güvenlik, telemetrik kontrol, hemşire çağrı, Gsm-Gprs haberleşme, alarm kontrol sistemleri ve e-devlet projeleri geliştirdi. 2009 yılından buyana, e-devlet projelerinde, yazılım altyapısı (framework) çalışmalarında bulunmaktadır.

Sosyal Medya

ORANLAR

  • 66943izleme

Arkadaşlarınla Paylaş

  • Tweet

0 Yorum

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Hocam Link başka sayfaya yönlendiriyor.
  • merhaba benim merak ettiğim bir konu var y...
  • Merhaba download linki çalışmıyor. Rica et...
  • Nevzat Bey selamlar, Açıkçası bizler a...
  • Parametreleri Cache İşleminden Yalıtma kon...

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 121411
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 66944
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 49305
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ