c# winform 打包部署 自定义界面 或设置开机启动
添加安装部署项目后,鼠标右键安装项目->视图->注册表, 要使软件在开机就运行,可以在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run中 添加键值保存软件目录。在这里我们依次添加以上的项,然后在Run中添加键值,键名可以自己起,value要填软件的物理路径。物理路径是客户在部署确定 的,我们如何获取呢?这里我们可以使用[TARGETDIR]获取客户选择的路径,在加上软件的启动文件名称。比如软件启动文件的名称是 Client.exe,那么Value的值就为:[TARGETDIR]Client.exe.生成安装项目。找到bin目录下的setup.exe文件 运行,安装结束后我们可以在注册表中找到相应的键值。重启电脑系统就会自动运行我们设置的软件。
引自:http://www.cnblogs.com/whj518/archive/2009/10/28/1591026.html
方法二:
CSDN中使用VS制作安装程序的介绍很多,我这里主要是在开发winform是制作安装程序后,如何修改.config配置文件,并修改注册表
HKEY_LOCAL_MACHINE、SOFTWARE\Microsoft\Windows\CurrentVersion\Run下的信息,让自己
的程序开机自动运行。
解决以上两个问题关键要作到以下几点:
1、创建安装项目后要在自己的解决方案是添加一个新的类库项目(ClassLibrary1),并在新类库中添加一下安装程序类(Installer1),在Installer1类中添加如下代码:
string LogicDir;//用于读取安装目标的物理路径
protected override void OnAfterInstall(IDictionary savedState)
{
base.OnAfterInstall(savedState);
}
public override void Install(IDictionary stateSaver)
{
//string ll=Context.Parameters[]
LogicDir = Context.Parameters["LogicDir"];//Context.Parameters["LogicDir"];
base.Install(stateSaver);
}
protected override void OnBeforeInstall(IDictionary savedState)
{
base.OnBeforeInstall(savedState);
}
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
}
public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
}
2、在库类项目ClassLibrary1是添加一个window窗体form1,用于完成自定义的安装配置。
窗体界面自己设计;
如添加三个TextBox
txtServerName服务器名称
txtSQLUserName SQL用户名称
txtSQLUserPassword SQL用户口令
添加一个Button
给Form1添加字段 string filePath;
重载Form1的构造函数
public Form1(string filepath)
{
filePath = filepath;
InitializeComponent();
}
Button1的单击事件代码如下:
private void btSave_Click(object sender, EventArgs e)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(filePath + @"\MySchool.exe");
//配置MySchool.exe.config文件。
if (config.ConnectionStrings.ConnectionStrings["MySchoolConnectionString"] != null)
{
config.ConnectionStrings.ConnectionStrings.Remove("MySchoolConnectionString");
//="Data Source=.;Initial Catalog=MySchool;User ID=sa;Password=123456"
string connString = "Data Source=" + this.txtServerName.Text.Trim();
connString += ";Initial Catalog=MySchool;User ID=" + this.txtSQLUserName.Text.Trim();
connString += ";Password=" + this.txtSQLUserPassword.Text.Trim();
ConnectionStringSettings conn = new ConnectionStringSettings("MySchoolConnectionString"
, connString, "System.Data.SqlClient");
config.ConnectionStrings.ConnectionStrings.Add(conn);
config.Save();
//此处开开始添加开机自动运行的键值,注意要using Microsoft.Win32;
RegistryKey hklm = Registry.LocalMachine;
RegistryKey shoftwer = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",true);
// RegistryKey ksxt = shoftwer.CreateSubKey("ksxt");
shoftwer.SetValue("ksxt", filePath + @"\MySchool.exe");
Application.Exit();
}
}
3.修改安装程序类Installer1中的OnAfterInstall方法如下:
Form1 fm1 = new Form1(LogicDir);//实例化一个窗体,
fm1.ShowDialog();//让新窗体显示
base.OnAfterInstall(savedState);
4.修改安装程序类Installer1中的Install方法如下
LogicDir = Context.Parameters["LogicDir"];//读取安装目标路径
base.Install(stateSaver);
5.在安装项目中“自定义操作”
右击“安装”添加自定义操作,自定义操作来源于安装项目的“应用程序文件夹”中的“主输出来自ClassLibrary1(活动)”项。
6.修改“主输出来自ClassLibrary1(活动)”的CustomActionData属性为 /LogicDir="[TARGETDIR]\"
把Windows Installer 属性的安装目标属性[TARGETDIR]赋值给LogicDir,这样在Install方法中才能读取到安装路径。
照以上步骤生成解决方案后,即可发布自己的程序。
用以上思路也可以实现卸载输入合法口令卸载的功能。
c# winform 打包部署 自定义界面 或设置开机启动的更多相关文章
- 【转】c# winform 打包部署 自定义界面 或设置开机启动
方法一: 创建安装部署这部分就不用说了,添加安装部署项目后,鼠标右键安装项目->视图->注册表, 要使软件在开机就运行,可以在HKEY_CURRENT_USER\Software\Micr ...
- windows设置开机启动项
一.windows下设置开机启动有如下方法 1 注册表启动项目RUN 2 计划任务,在"windows管理">"计划任务管理器"中新建任务,在操作栏指定要 ...
- [转载]C#设置开机启动
原理就是在注册表启动项里添加一项.路径:SOFTWARE\Microsoft\Windows\CurrentVersion\Run或者直接:运行->regedit找到这个路径添加一项. usin ...
- ubuntu下设置开机启动服务
原文:http://blog.csdn.net/dante_k7/article/details/7213151 在ubuntu10.04之前的版本都是使用chkconfig来进行管理,而在之后的版本 ...
- centos7安装docker并设置开机启动
版本要求:查看内核版本,需大于3.10 [root@localhost ~]# uname -r -.el7.x86_64 更新内核:如果是生产机器务必慎重更新内核,避免出现不必要的问题. sudo ...
- openerp 7 在ubuntu上设置开机启动
我们要让openerp开机运行起来. 第一步,先进入系统目录: cd /etc/init.d 第二步,创建文件.命名为openerp-server sudo vi openepr-server 第三步 ...
- Fedora 21 设置开机启动脚本
sudo touch /etc/rc.d/rc.localsudo vim /etc/rc.d/rc.local 在/etc/rc.d/rc.local文件中写入, 然后使用:wq命令 保存并退出. ...
- windows下架设SVN服务器并设置开机启动
原文:windows下架设SVN服务器并设置开机启动 1.安装SVN服务器,到http://subversion.apache.org/packages.html上下载windows版的SVN,并安装 ...
- Linux Redis自动启动,Redis开机启动,Linux Redis设置开机启动
Linux Redis自动启动,Redis开机启动,Linux Redis设置开机启动 >>>>>>>>>>>>>> ...
随机推荐
- Ubuntu Command-Line: Enable Unlimited Scrolling in the Terminal
At times when using the terminal, the output from a command can be so long, you simply can’t scroll ...
- H.264简介
H.264/MPEG-4 AVC (H.264) 是1995年自MPEG-2视频压缩标准发布以后最新的, 最有前途的视频压缩标准. H.264是由ITU-U和ISO/IEC联合开发组共同开发的最新国际 ...
- HDU 1508 DP
题意:规定一个数列 = {这个数的质因子只能包括2,3,5,7},求第n个数字是多少: 思路:暴力打表,然后只粘数据,虽然过了,但是正解其实是DP,每一个数字都是由某一个该数列里的某一个数字乘以2,3 ...
- Insert Interval
在已经排好序的区间中,插入一个新的区间,与merge的做法类似 Given a set of non-overlapping intervals, insert a new interval into ...
- svn Q&A
Q1:在svn commit的时候,会出现某某文件 is missing.这是因为此次提交时:远程repository中并没有该文件,而且本地repository也没有该文件. 具体原因: 1.可能因 ...
- Sublime Text 2 配置
设置Python的Tab缩进为四个空格,打开一个Py文件 # Preferences---->Settings-More---->Syntax Specific-User # 贴入如下代码 ...
- Mac下Nginx环境配置
环境信息: Mac OS X 10.11.1 Homebrew 0.9.5 正文 一.安装 Nginx 终端执行: brew search nginx brew install nginx 当前版本 ...
- 自动选中div中的文字
<html> <head> <title></title> <script type="text/javascript" de ...
- Windows 2003上 SaltStack/Salt 和 psutil 可能存在的问题及解决
今天把salt安装在windows 2003上,发现无法启动,随之而来的是一个有一个的坑,让我们一起逐个排查. 问题一(salt无法启动) salt无法启动,错误结果如图:
- java比较两个字符串是否相等
从c 到c++ 到 c# 到 JavaScript 判断两个字符串是否相等,用==号都可以.奇葩的java怎么可以只能用equals()这个函数.只是因为String是引用类型吗??!!哭笑不得.. ...