今天终于搞定了安装项目中的自定义操作,庆祝一下!
2011-08-02 16:01
645 查看
在安装项目中可以执行自定义操作,包括制定一个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"); //} } }
相关文章推荐
- Neo4J 安装&常见语句操作&项目中的集成应用&复杂查询(@Query注解和自定义Match)
- 今天空间的访问量终于突破1000,庆祝一下
- 今天电信宽代终于装上光纤了,升级或安装光纤需购光猫,可以自购。我来扫盲一下
- 在安装composer成功创建larvel项目失败,解决方法 研究了一天终于OK了
- Kickstart 无人职守安装,终于搞定了。
- 今天安装了robocode,用了一下,感觉还不错
- 终于搞定GeoTools对PostGis的操作
- 终于搞定关于Hibernte的Blob更新操作
- 今天激活了帐号,庆祝一下!
- 关于使用Visual Studio 2008 建立Setup And Deployment Project(安装与部署项目)制作安装.net 安装程序,插入Custom Actions(自定义动作)的办法
- 我今天终于搞懂了Linux上安装oracle时修改的系统参数是什么意思了
- windows应用程序(winform窗体程序)安装部署中自定义操作出现的问题
- 今天安装SPS,终于在第二次成功~~
- 2008年8月21号,星期四,晴。志当存高远。—— 诸葛亮《诫外生书》今天是我博士生涯的第46天,昨天胡给我们小组开会了,中间讲的,做项目如何规避“地雷”和如何从普通的操作中提炼出关键技术
- 今天竟然是光棍节!庆祝一下,呵呵
- 今天开博,庆祝一下O(∩_∩)O~
- 今天是第一次写博客,先写个小程序庆祝一下
- 今天是我的生日,写篇文章庆祝一下
- 今天要准备一个项目时间安排文档,于是查了一下。
- django--今天开始正式做一个比较大的项目,先看一下基础架构