概述
Windows 服务就是运行在windows 系统的一个进程的开发,可以把它做成一个Timer,也可以做成while循环,每隔一段时间起一个线程来运行.
windows install开发是利用msi.dll 提供方法,来安装一个存放有安装程序目录的任务.
windows 服务开发
先在VS中
增加到
在ProjectInstaller.cs中代码设计如下
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
}
在ProjectInstaller中代码如下
partial class ProjectInstaller
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
//
// serviceProcessInstaller1
//
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
this.serviceProcessInstaller1.Password = null;
this.serviceProcessInstaller1.Username = null;
//
// serviceInstaller1
//
this.serviceInstaller1.Description = "用来处理所有的异步操作,如发送邮件,发送短信";
this.serviceInstaller1.DisplayName = "AsynchronismServices";
this.serviceInstaller1.ServiceName = "AsynchronismService";
this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic;
//
// ProjectInstaller
//
this.Installers.AddRange(new System.Configuration.Install.Installer[] {
this.serviceProcessInstaller1,
this.serviceInstaller1});
}
#endregion
private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
private System.ServiceProcess.ServiceInstaller serviceInstaller1;
}
windows install开发
先定义一个MSIInstallerManager类
/// <summary>
/// Import the windows installer dll
/// </summary>
internal class MSIInstallerManager
{
/// <summary>
/// Indicate the WindowsInstaller UI level
/// </summary>
public enum INSTALLUILEVEL
{
/// <summary>
/// authored UI with wizards, progress, errors
/// </summary>
INSTALLUILEVEL_FULL = 5,
}
[DllImport("msi.dll")]
public static extern uint MsiInstallProduct(string szPackagePath, string szCommandLine);
[DllImport("msi.dll", SetLastError = true)]
public static extern int MsiSetInternalUI(INSTALLUILEVEL dwUILevel, ref IntPtr phWnd);
}
然后增加如下方法
/// <summary>
/// Install the specified msi file into local computer
/// </summary>
/// <param name="filePath">the path of specified msi file </param>
/// <returns>if the msi file is installed successfully,return true,otherwise return false</returns>
private bool Installfile(string filePath)
{
IntPtr myPtr = new IntPtr();
MSIInstallerManager.MsiSetInternalUI(MSIInstallerManager.INSTALLUILEVEL.INSTALLUILEVEL_FULL, ref myPtr);
install the specified msi file
uint result = MSIInstallerManager.MsiInstallProduct(filePath, string.Empty);
if the result value is 0 ,the installation will be completed successfully
if (0 == result)
{
return true;
}
else
{
return false;
}
}
总结
windows服务开发一般用于win service开发,windows install开发用于sofeware update的开发.
欢迎各位参与讨论,如果觉得对你有帮助,请点击 推荐下,万分谢谢.
作者:spring yang
出处:http://www.cnblogs.com/springyangwc/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。