å®è£ Winfowsæå¡é¦å è¦æ·»å å®è£ ç¨åºï¼æ·»å å®è£ ç¨åºæ¥éª¤å¦ä¸ï¼
1ãå°Windowsæå¡ç¨åºåæ¢å°è®¾è®¡è§å¾ï¼ å³å»è®¾è®¡è§å¾éæ©âæ·»å å®è£ ç¨åºâ
2ãåæ¢å°å被添å çProjectInstallerç设计è§å¾
ä¸è¬è®¾ç½®å¦ä¸ï¼
设置serviceInstaller1ç»ä»¶çå±æ§ï¼
1) ServiceName = æå¡å称
2) StartType = Automatic ï¼å³èªå¨
设置serviceProcessInstaller1ç»ä»¶çå±æ§
1) Account = LocalSystemï¼è´¦æ·ä¸è¬è®¾ç½®ä¸ºæ¬å°ç³»ç»
3ãçæ解å³æ¹æ¡
å®è£ æå¡ï¼
æ¹æ³ä¸ã使ç¨DOSå½ä»¤å®è£ windowæå¡
1ãå¨æå¡æå¨çæ件夹ä¸çbin\debugæ件夹ä¸æ¾å°.exeæ件ï¼ä¾å¦WindowsService1.exeï¼
å°æ¤æ件æ·è´å°ä½ æ³å®è£ çæ件夹ä¸ã
2ãè¿å ¥DOSçé¢
ï¼VS2008-->Visual Studio Tools-->Visual Studio 2008 å½ä»¤æ示ï¼æ¥è¿å ¥DOSï¼ç´æ¥ç¨cmdå¯è½æäºå½ä»¤æ¾ä¸å°ï¼
3ãè¾å ¥
æ¹æ³äºã使ç¨å®è£ 项ç®å®è£ windowsæå¡
个人æ¯è¾æ¨èè¿ä¸ªæ¹æ³ï¼éæ©ç®å½å®è£ æ´çµæ´»ï¼èä¸ä¸ç¨å¨DOSç¯å¢ä¸è¿è¡ã
å 为æ¬äººæ¯è¾æï¼ç´æ¥ç»åºå«äººæ»ç»çå°å
注æï¼ä»¥åæ¯æ¬¡æå¡é¡¹ç®ææ´æ¹çæ¶åï¼éè¦ç¼è¯æå¡åï¼å¨å®è£ 项ç®ä¸å·æ°ä¾èµé¡¹ï¼ï¼ï¼
æ¹æ³ä¸ã
å¨ProjectInstaller.csçåå°ä»£ç ä¸æ·»å å®è£ æå¡åå¸è½½æå¡ç代ç
/// <summary>
/// å®è£ æå¡
/// </summary>
/// <param name="stateSaver"></param>
public override void Install(System.Collections.IDictionary stateSaver)
{
Microsoft.Win32.RegistryKey system,
//HKEY_LOCAL_MACHINE\Services\CurrentControlSet
currentControlSet,
//...\Services
services,
//...\<Service Name>
service,
//...\Parameters - this is where you can put service-specific configuration
config;
try
{
//Let the project installer do its job
base.Install(stateSaver);
//Open the HKEY_LOCAL_MACHINE\SYSTEM key
system = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System");
//Open CurrentControlSet
currentControlSet = system.OpenSubKey("CurrentControlSet");
//Go to the services key
services = currentControlSet.OpenSubKey("Services");
//Open the key for your service, and allow writing
service = services.OpenSubKey(conServiceName, true);
//Add your service's description as a REG_SZ value named "Description"
service.SetValue("Description", "æè¿°è¯è¨");
//(Optional) Add some custom information your service will use...
config = service.CreateSubKey("Parameters");
}
catch (Exception e)
{
Console.WriteLine("An exception was thrown during service installation:\n" + e.ToString());
}
}
/// <summary>
/// å¸è½½æå¡
/// </summary>
/// <param name="savedState"></param>
public override void Uninstall(System.Collections.IDictionary savedState)
{
Microsoft.Win32.RegistryKey system,
currentControlSet,
services,
service;
try
{
//Drill down to the service key and open it with write permission
system = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System");
currentControlSet = system.OpenSubKey("CurrentControlSet");
services = currentControlSet.OpenSubKey("Services");
service = services.OpenSubKey(conServiceName, true);
//Delete any keys you created during installation (or that your service created)
service.DeleteSubKeyTree("Parameters");
//...
}
catch (Exception e)
{
Console.WriteLine("Exception encountered while uninstalling service:\n" + e.ToString());
}
finally
{
//Let the project installer do its job
base.Uninstall(savedState);
}
}
代ç æ·»å å®æå
æ·»å window serviceå®è£ çæ¹å¤çå½ä»¤
1ï¼å¨é¡¹ç®æ·»å ä¸ä¸ªææ¬æ件ï¼æ´å为install.batï¼ç¼è¾æ件çå 容å¦ä¸ï¼
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -i "WindowsService1.exe"
@pause
2ï¼å¨é¡¹ç®æ·»å ä¸ä¸ªææ¬æ件ï¼æ´å为uninstall.batï¼ç¼è¾æ件çå 容å¦ä¸
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -u "WindowsService1.exe"
@pause
说æï¼ä¸é¢ç»¿è²åä½ä¸ºæå¡å称
ç¼è¯å®æåå°debugçæ件æ·è´å°æ³å®è£ çç®å½ä¸ï¼ç¹å»install.batå³å®æå®è£ ã