博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
windows 服务开发和windows install开发
阅读量:5891 次
发布时间:2019-06-19

本文共 4160 字,大约阅读时间需要 13 分钟。

概述

     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    {        ///         /// Required designer variable.        ///         private System.ComponentModel.IContainer components = null;        ///          /// Clean up any resources being used.        ///         /// true if managed resources should be disposed; otherwise, false.        protected override void Dispose(bool disposing)        {            if (disposing && (components != null))            {                components.Dispose();            }            base.Dispose(disposing);        }        #region Component Designer generated code        ///         /// Required method for Designer support - do not modify        /// the contents of this method with the code editor.        ///         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类

///     /// Import the windows installer dll    ///     internal class MSIInstallerManager    {        ///         /// Indicate the WindowsInstaller UI level        ///         public enum INSTALLUILEVEL        {                ///             /// authored UI with wizards, progress, errors            ///             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);    }

 

 

 

 

然后增加如下方法

///         /// Install the specified msi file into local computer        ///         /// the path of specified msi file         /// 
if the msi file is installed successfully,return true,otherwise return false
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的开发.

 

欢迎各位参与讨论,如果觉得对你有帮助,请点击    推荐下,万分谢谢.

作者:

出处:

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/springyangwc/archive/2012/02/14/2350545.html

你可能感兴趣的文章
地址与引用
查看>>
十大开源ERP点评 献给深水区的中小企业和CIO们
查看>>
Cacti开源监控系统的安装、配置、优化及运维技术文档
查看>>
MNIST机器学习入门-基于TensorFlow
查看>>
Oracle --存储函数和存储过程
查看>>
Windows Server 2008 R2 SP1 关闭IE ESC (Internet Explorer 增强的安全配置)
查看>>
套接字编程——基于TCP协议
查看>>
云计算时代的运维
查看>>
DT系统开发之-文件结构目录
查看>>
Android Looper简介
查看>>
关于left join 的几点总结
查看>>
oracle job的创建和删除
查看>>
阿里年薪50w+的顶尖p7专家,只因做到了这几点
查看>>
我体会过发传单的辛苦,所以就必须接别人派的传单?
查看>>
自动化运维Ansible之playbook剧本的使用
查看>>
【PHP】创蓝253云通信平台国际短信接口调用demo案例
查看>>
Confluence 6 重要缓存和监控
查看>>
Day 30 shell 编程
查看>>
静态路由和默认路由
查看>>
谈一谈Spring-Mybatis在多数据源配置上的坑
查看>>