今天终于搞定了安装项目中的自定义操作,庆祝一下!

原创 2011年08月02日 16:01:24

在安装项目中可以执行自定义操作,包括制定一个exe dll vbs js等类型的文件。之前我们是利用一个exe,但感觉使用起来限制很多,如不方便定制,一次只执行一个exe,不方便传参数等。在.net中可以写出一个安装类来,通过override出Commit、install 、Uninstall等函数实现自定义操作。这里是一个实际的示例:


namespace InstHelper
{
    [RunInstaller(true)]
    public partial class InstHelper : Installer
    {
        public InstHelper()
        {
            InitializeComponent();
        }

        public override void Commit(System.Collections.IDictionary savedState)
        {
            base.Commit(savedState);
            string exepath;
            //注册服务
            string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat(" create DaykeyPcManager binpath= \"{0}\\PcManagerSvc.exe\"", path);
            
            System.Diagnostics.Process.Start("sc.exe", sb.ToString());  
        
            //配置服务
            sb.Length = 0;
            sb.Append("config DaykeyPcManager type= interact type= own");
            System.Diagnostics.Process.Start("sc.exe", sb.ToString());

            //添加防火墙列外
            sb.Length = 0;
            sb.AppendFormat(" firewall add allowedprogram \"{0}\\PcManagerSvc.exe\" ABCD ENABLE", path);
            System.Diagnostics.Process.Start("netsh.exe", sb.ToString());

            //启动服务
            exepath = path + "\\start.bat";
            System.Diagnostics.Process.Start(exepath);
        }

        public override void Uninstall(System.Collections.IDictionary savedState)
        {
            base.Uninstall(savedState);

            //停止服务
            string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
            string exepath = path + "\\stop.bat";
            System.Diagnostics.Process.Start(exepath);

            //删除防火墙列外
            StringBuilder sb = new StringBuilder();
            sb.Length = 0;
            sb.AppendFormat(" firewall delete allowedprogram \"{0}\\PcManagerSvc.exe\"", path);
            System.Diagnostics.Process.Start("netsh.exe", sb.ToString());

            //删除服务
            sb.Length = 0;
            sb.Append("delete DaykeyPcManager");
            System.Diagnostics.Process.Start("sc.exe", sb.ToString());
        }

        protected override void OnBeforeUninstall(System.Collections.IDictionary savedState)
        {
            base.OnBeforeUninstall(savedState);
            //停止服务
            string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
            string exepath = path + "\\stop.bat";
            System.Diagnostics.Process.Start(exepath);
        }
        //public override void Install(System.Collections.IDictionary stateSaver)
        //{
        //    base.Install(stateSaver);
        //    System.Diagnostics.Process.Start("http://www.csdn.net");
        //}
    }
}



相关文章推荐

今天给大家讲解一下在自定义View中,如何实现画图。

时间似流水,又到小学    大学  开学的时间了。后续。。。。。。。。。。。。。。。。。。。。。。。。。。。。         效果图     @Override ...

今天终于搞定了Qt+gsoap2.8的编译了.

第一步,下载gsoap2.8                    地址:https://sourceforge.net/projects/gsoap2/files/               ...
  • dronly
  • dronly
  • 2017年04月26日 10:12
  • 602

奋战一周,终于基本搞定了跨平台内联汇编的选择和其他各种问题.分享一下

其实本来我的需求挺简单的,我甚至不能说自己是个程序员,各种类库,API什么的我也只是简单了解过boost,ZThread之类常用的,连怎么在windows里用MFC画个窗体都不知道....我主要是个搞...
  • menzi11
  • menzi11
  • 2012年03月19日 05:30
  • 1451

终于搞定GeoTools对PostGis的操作

终于搞定GeoTools对PostGis的操作       唉,这几天撒事情都没有做,就搞定了GeoTools的一些bug的删除。2.3版本问题比较多,上次在GT上和Richard聊天,他也对G...

Neo4J 安装&常见语句操作&项目中的集成应用&复杂查询(@Query注解和自定义Match)

Neo4J 安装,Neo4J 常见语句操作,Neo4J 项目中的集成应用,Neo4J 复杂查询(@Query注解和自定义Match,多条件分页查询&结点、关系组合查询等)...

今天遇到打包安装app提示“应用自定义权限重名(签名证书不一致)”

这次我直接群里问大神,我以为是Flyme系统的问题(后面阅读了大部分文章是说应用本身的问题)。按照群里大神的解决方案是在手机访客模式下将数据删除掉 解决步骤: 1、在魅蓝3S手机上先给自己手机设置...

零java基础搞定微信Server_7:微信公众号的自定义菜单

昨天玩了文本消息的接收,今天想试试自定义菜单。
  • zddxmu
  • zddxmu
  • 2015年09月09日 19:37
  • 1976

用iTunes搞定iPhone自定义铃声,终极版!!

拿到iPhone4s,初次实际使用iPhone,发现封闭的ISO还是有一些不适应的地方,比如将歌曲设为铃声。昨晚搜索了几十篇帖子,不外乎三种方法:     1、越狱;     2、安装PC/mac...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:今天终于搞定了安装项目中的自定义操作,庆祝一下!
举报原因:
原因补充:

(最多只允许输入30个字)