WPF安装部署小结

开机启动

右击"MySetup">>"视图">>"注册表",在"HKEY_LOCAL-MACHINE"文件夹下新建键"Software">>"Microsoft">>"Windows">>"CurrentVersion">>"Run",在"Run"文件夹新建字符串值,命名为"DataServiceHost.exe",可根据需求命名,右击"DataServiceHost">>"属性窗口",其中"Value"属性设为"[TARGETDIR] DataServiceHost.exe"。如此,便实现了开机启动。

实现安装后自动运行及删除注册表

点击菜单上的"文件">>"添加">>"新项目",选择"安装程序类",命名为"Installer",在"Installer.cs"代码中重写如下方法。自定义操作完成后,一定要将应用程序生成,这样就可以得到".dll"文件。生成成功后,就可以将该".dll"程序集添加到安装项目中。右击"MySetup">>"视图">>"自定义操作",主窗口如下图。

右击"安装">>"添加自定义操作",弹出如下对话框。

在"应用程序文件夹"中添加程序集,在之前"InstallService应用程序"中debug文件夹中找到".dll"文件,添加进去。这样便实现了安装后自动运行和卸载后删除注册表的功能。

安装完成后自动运行某个程序

将这句代码写在AfterInstall里面:

System.Diagnostics.ProcessStartInfo psiConfig = new System.Diagnostics.ProcessStartInfo(path + "\\run.exe");//path即是安装的目录

System.Diagnostics.Process pConfig = System.Diagnostics.Process.Start(psiConfig);

如何得到用户所选安装路径?在实现代码的时候,用户所选安装路径大多数情况下都要用到,怎么得到他的值呢?在自定义操作->安装->"主输出来自Library(活动)"上面右键属性,在CustomActionData中填入/targetdir="[TARGETDIR]\", 然后在类InstallerTest中用这句话this.Context.Parameters["targetdir"] 就可以取得安装的目录了

C#避免重复打开应用程序

在程序启动时判断进程是否在运行,如果运行则关闭。

  public MainWindow()
        {
            InitializeComponent();
            //默认设置
            //关掉已运行的进程实例
            Process ps = GetRunningInstance();
            if (ps != null) ps.Kill();
        }
//获取已运行的进程实例
        public static Process GetRunningInstance()
        {
            Process currentProcess = Process.GetCurrentProcess(); //获取当前进程
            //获取当前运行程序完全限定名
            string currentFileName = currentProcess.MainModule.FileName;
            //获取进程名为ProcessName的Process数组。
            Process[] processes = Process.GetProcessesByName(currentProcess.ProcessName);
            //遍历有相同进程名称正在运行的进程
            foreach (Process process in processes)
            {
                if (process.MainModule.FileName == currentFileName)
                {
                    if (process.Id != currentProcess.Id) //根据进程ID排除当前进程
                        return process;//返回已运行的进程实例
                }
            }
            return null;
        }    

WPF 接收进程参数方法

首先重写app.xml方法OnStartup,在方法中接收参数,并保存到属性中。在主窗体就可以应用了。

 /// <summary>
    /// App.xaml 的交互逻辑
    /// </summary>
    public partial class App : Application
    {
        //重写app方法
        protected override void OnStartup(StartupEventArgs e)
        {
            if (e.Args != null && e.Args.Count() > 0)
            {
                this.Properties["ArbitraryArgName"] = e.Args[0];
            }
            base.OnStartup(e);
        }
    }

在应用的时候

 if (Application.Current.Properties["ArbitraryArgName"] != null)
            {
                _UserName = Application.Current.Properties["ArbitraryArgName"].ToString();//ArbitraryArgName要与APP里面设置的名字相同
                _UserName = _UserName.Split(‘/‘)[2];
                lbUserName.Text = "当前用户:" + _UserName;
          }
时间: 2024-11-10 18:23:06

WPF安装部署小结的相关文章

Wix 安装部署教程(十) --来,用WPF做个漂亮的安装界面

在上一篇中曾留下两个问题,.Net捆绑安装不触发以及路径选择的问题现在都已经解决,这段时间花的最多的地方还是WPF调样式上面,奈何WPF功力不够,暂时还是没有达到自己想要的效果.另外ViewModel做了些调整,状态更加分明.安装效果是仿照搜狗输入法做的.先上效果图.   以上这只是四个基本的页面,更细化一些可以分出卸载的进度页面,卸载的完成页面,对修复同理,还有安装失败,用户取消提示页面,再就是能检测新版本并覆盖安装,这些都可以根据状态去添加页面.下面简单的说下思路和新的问题点. 关键流程 安

QuartzDesk(Lite Edition)安装部署和使用小结

一.环境要求 Oracle Java (JDK) 6, 7, 8 apache-Tomcat 6.x or 7.x mysql5.6+ 二.安装部署QuartzDesk 1. 版本说明 QuartzDesk共有三种版本:Lite Edition/Standard Edition/Enterprise Edition,其中Lite Edition是免费版,Standard Edition/Enterprise Edition是商用版. 免费版只有部分监控功能,商用版的功能比较全.各版本的安装步骤和

【01】Redis for OPS:关于 Redis 基础说明与安装部署

写在前面的话 本章节开始在主要介绍在运维工作中绕不开的一个话题,数据缓存 NoSQL 服务 Redis,搭建很简单,使用很简单,运行也稳定的一批,一般小公司几乎很少出现以为量的问题导致他 down 掉的情况,但如果我们想走上更高的台阶,只是简单的安装运行肯定是不够的.所以我会写这几篇博客,算是做一个简单的小结,其内容涉及:主从,哨兵(高可用),集群(分布式). Redis 简介 在之前专门学习了 MySQL,我们把它称为关系型数据库,现在开始谈谈非关系型数据库(NoSQL,Key - Value

Python实现一键安装部署LNMP环境

最近一直在学Python,东西比较多,时间持续的也比较长,为了能够学以致用,想到了原来写过的shell一键安装部署LNMP脚本,既然shell能写,Python也一定能写,就用学到的知识写了下面这个版本,这可能并不是最优版本,等学到更多东西的时候再进行优化升级! 环境介绍: Python 2.6.6 Centos 6.5 nginx 1.10.1 mysql 5.6.34 php 5.3.3 代码如下: #!/bin/env python import os import sys def ent

linux运维之weblogic12.1.3安装部署

安装最新的weblogic版本,版本号为 12.1.X(12.1.2,12.1.3).开始以为和旧版安装一样,使用控制台的方式,下载bin文件,然后一步步在console执行下来就行了.万万没想到,从12C版本后,bin文件不提供了,改成全系统通用的jar文件 (generic.jar).试了半天原来那种安装方式不能用了,非得用图形界面安装.由于服务器只能远程登录,于是各种百度.各种找材料,最后终于找到一种静默方式的安装.请看下文. weblogic12C各版本所支持的JDK版本: fmw_12

Sqlserver2008安装部署文档

Sqlserver2008部署文档 注意事项: 如果你要安装的是64位的服务器,并且是新机器.那么请注意,你需要首先需要给64系统安装一个.net framework,如果已经安装此功能,请略过这一步.   具体安装.net framework的方法是:在图标<我的电脑>上右击选择<管理>,打开以后选择<功能>选项卡,如下图所示,然后点击添加功能,勾选..net framework,然后一直点击下一步安装即可. 安装的过程中,需要注意如果你要安装的服务器有外挂或者附加的

window7下 cocos2dx android交叉编译环境部署小结

上周被android交叉编译搞惨了,还好最后弄好了,写个小结以后备用吧. 步骤,1.下载cygwin的devel和shells模块 2. 2.设置环境变量 a.设置NDK_ROOT b.设置Path 编辑Path,在后面追加4个环境变量,以;号隔开(别忘了给前面的加上;),4个分别是android的sdk的platform-tools,android的sdk的tools,   cygwin的bin,上面添加的NDK_ROOT C:\Work\adt-bundle-windows-x86_64-2

redis以及php的redis扩展安装部署

一.redis 安装部署: tar xf redis-3.2.8.tar.gz cd redis-3.2.8 make MANIFESTO=jemalloc make PREFIX=/usr/local/redis-3.2.8 install ln -s /usr/local/redis-3.2.8/ /usr/local/redis echo "export PATH=/usr/local/redis/bin:$PATH" >> /etc/profile find / -

ELK部署logstash安装部署及应用(二)

Logstash 安装部署注意事项: Logstash基本概念: logstash收集日志基本流程: input-->codec-->filter-->codec-->output input:从哪里收集日志. filter:发出去前进行过滤 output:输出至Elasticsearch或Redis消息队列 codec:输出至前台,方便边实践边测试 数据量不大日志按照月来进行收集 如果通过logstash来采集日志,那么每个客户端都需要安装logstash 安装需要前置系统环境