`
hulunberbus
  • 浏览: 860405 次
文章分类
社区版块
存档分类
最新评论

项目打包时自定义安装属性,如数据库名等

 
阅读更多

项目打包总结

实现功能:根据用户自定义指定的数据库名及其他一些文件的安装如(iewebcontrols)

步骤:

新建一项目:visual C#项目 , 选中类库模板 ,如命名为myInstall,在此项目下面添加一新项:选择安装程序类(Installer1.cs),在此我采用默认名。此安装类库将实现数据库的安装及其他一些文件的安装。

installer1.cs里我们将重写安装类的方法:见参考1

Install Commit Rollback Uninstall<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

install方法中来实现自定义的安装:

首先我们要得到一些用户变量(用户在安装时所做的操作,如数据库管理帐号等)

对于这些变量我们可以通过上下文环境来得到this.Context.Parameters["DataBaseName"];(在安装项目里将会进行设置)

在此我们一共得到五个变量。安装数据库的服务器,指定的数据库名,数据库管理员帐号,密码。以及数据库备份文件。

我们来看一下具体的代码,很简单:)

private void InstallDateBase()

{

System.Reflection.Assembly Asm;

// Asm= System.Reflection.Assembly.GetExecutingAssembly();

// System.IO.FileInfo FileInfo = new System.IO.FileInfo(Asm.Location);

// 也可以得到当前安装的目录,如wwwroot目录下myweb/你的安装工程名.dll

//下面是进行数据库连线及命令

SqlConnection sqlConnection1 = new SqlConnection();

string DBName = this.Context.Parameters["DataBaseName"];

string DBServer = this.Context.Parameters["ServerName"];

string DBUser = this.Context.Parameters["InStallAdmin"];

string DBKey = this.Context.Parameters["InstallPassword"];

string dir=this.Context.Parameters["dir"];

StreamWriter ss=new StreamWriter(@"c:/aaa.txt",true);

ss.WriteLine("data source=" + DBName + ";database=master;uid=" + DBUser +";password=" + DBKey);

ss.Close();

string CONSTR = "data source=" + DBServer +";database=master;uid=" + DBUser +";password=" + DBKey;

sqlConnection1.ConnectionString = CONSTR;

//数据库将安装到system32

string CurDir = Directory.GetCurrentDirectory() + @"/TestData/database";

if(!Directory.Exists(CurDir))//不存在就新建一个

{

Directory.CreateDirectory(CurDir);

}

string MSQL = "RESTORE DATABASE " + DBName +

" FROM DISK = '" + dir + @"/database/myDataBase.bak' " +

" WITH MOVE 'myDate_dat' TO '" + CurDir + @"/" + DBName + ".mdf', " +

" MOVE 'myDate_log' TO '" + CurDir + @"/" + DBName + ".ldf' " ;

SqlCommand cmd = new SqlCommand(MSQL,sqlConnection1);

cmd.Connection.Open();

cmd.ExecuteNonQuery();

cmd.Connection.Close();

if(sqlConnection1.State == ConnectionState.Open)

{

sqlConnection1.Close();

}

//安装TreeView

ProcessStartInfo psi = new ProcessStartInfo();

psi.WorkingDirectory = dir+"//database";

psi.FileName = dir + @"/database/iewebcontrols.msi ";

psi.UseShellExecute=true; //msi文件,如是exe不用设

Process.Start(psi);

//有哪位兄弟帮忙看一下。下面的代码。在执行时会说有一个进程在运行,导致安装这些控件时无法运行。一定要关了。才可以.但是下面的代码比上面的代码有一点好处,下面的进程等到结束后继续整个install方法的其他代码。而上面的代码,在实际运行时,整个安装已结束了。而安装TreeView的工作才刚开始。有点不同步

// System.Diagnostics.Process myproc=new System.Diagnostics.Process();

// myproc.EnableRaisingEvents=true;

//

// string file=dir+@"/database/iewebcontrols.msi";

//

// myproc.StartInfo.UseShellExecute=true;

// myproc.StartInfo.FileName = file;

// myproc.Start();

// myproc.WaitForExit();//此方法可以无限期等到进程运行完成,才执行下面的代码

// if(myproc.HasExited==true)

// {

// // myproc.Kill();

//

// }

}

public override void Install(System.Collections.IDictionary stateSaver)

{

try

{

base.Install(stateSaver);

this.InstallDateBase();//调用上面的方法

}

catch

{

throw;

}

}

public override void Uninstall(System.Collections.IDictionary stateSaver)

{

base.Uninstall(stateSaver);

//UnInstallDataBase();

}

public override void Commit(System.Collections.IDictionary stateSaver)

{

base.Commit(stateSaver);

}

public override void Rollback(System.Collections.IDictionary stateSaver)

{

base.Rollback(stateSaver);

}

参考1

ms-help://MS.VSCC/MS.MSDNVS.2052/Vbcon/html/vbtskoverridingdefaultmethodsoninstallationcomponent.htm

ms-help://MS.VSCC/MS.MSDNVS.2052/vsintro7/html/vxwlkWalkthroughUsingCustomActionToCreateDatabaseDuringInstallation.htm

现在我们再此工程下面添加一个新的项目

安装和部署项目,选中web 项目模板,如命名为websetup2.

创建部署项目

  1. 文件菜单上,选择添加项目”->“新建项目

  2. 添加项目对话框中,选择项目类型窗格中的安装和部署项目,然后选择模板窗格中的“WEB安装项目。在名称框中,键入 websetup2(我是默认的,没改。这些语句懒得打,抄来的,:))

  3. 属性窗口中,选择 ProductName 属性并键入 mywebTest

  4. 在文件系统编辑器中,选择应用程序文件夹。在操作菜单上,选择添加”->“项目输出

  5. 添加项目输出组对话框中,为“myInstall”项目选择主输出。

在前面的操作与一般打包一样,将你的WEB工程里的一些文件添加进来。及一些其他打包设置(产品名等),我就不多说了。

我们这里仅仅要加入一个数据库备份文件(myDataBase.bak

首先打开websetup2的文件系统窗口,选中web应用程序文件夹,在此文件夹下面添加一个文件夹我们用来存放数据库,如database,再将mydatabase.bak文件复制到此目录下面。

现在我们要添加一个安装时的窗口,用来让用户输入数据库帐号等。我们只要打开用户界面窗口就可以进行操作了。

创建自定义安装对话框

  1. 在解决方案资源管理器中选择websetup2项目。在视图菜单上指向编辑器,然后选择用户界面

  2. 在用户界面编辑器中,选择安装下的启动节点。在操作菜单上,选择添加对话框

  3. 添加对话框对话框中选择文本框 (A)”对话框。

  4. 操作菜单上选择上移。重复此步骤,直到文本框 (A)”对话框位于安装文件夹节点之上。

  5. 属性窗口中,选择 BannerText 属性并键入 自定义数据库安装

  6. 选择 BodyText 属性并键入自定义数据库安装

  7. 选择 Edit1Label 属性并键入服务器名:

  8. 选择 Edit1Property 属性并键入 SERVERNAME

  9. 选择 Edit2Label 属性并键入创建数据库名:

  10. 选择 Edit2Property 属性并键入 DATABASENAME

  11. 选择 Edit3Label 属性并键入数据库管理员帐号:

  12. 选择 Edit3Property 属性并键入 INSTALLADMIN

  13. 选择 Edit4Label 属性并键入管理员密码:INSTALLPASSWORD

  14. 选择 Edit4Property 属性并键入 SERVERNAME

创建自定义操作

  1. 在解决方案资源管理器中选择websetup2项目。在视图菜单上指向编辑器,然后选择自定义操作

  2. 在自定义操作编辑器中选择安装节点。在操作菜单上,选择添加自定义操作

  3. 选择项目中的项对话框中,双击应用程序文件夹

  4. 选择主输出来自 DBCustomAction(活动)项。

属性窗口中,选择 CustomActionData 属性并键入 /InstallPassword=[INSTALLPASSWORD] /InStallAdmin=[INSTALLADMIN] /ServerName=[SERVERNAME] /DataBaseName=[DATABASENAME] /dir="[TARGETDIR]/"
注意各个 用户数据之间是有空格的。如/aaa=[fdfad] /bfff=[fdafdfd]

  1. 生成菜单上选择生成websetup2

上面的customActionData将会在安装类中引用的。注意各个之间一定要有空格。

/dir=[“TARGETDIR”],取的是最终安装的WEB目录

到此一个项目打包就此结束了

分享到:
评论

相关推荐

    msi打包工具.rar

    - 安装时可设置文件属性 - 只读、隐藏等; - 强制安装完毕系统重启动; - 支持使用 64 位 CPU 的系统中安装包制作; - Windows 系统下安装过程完整日志; - 支持 Java 应用程序; - 旧版本自动升级; - 支持合并...

    DataPie数据库导入导出工具 v3.4源码2012810

    DataPie数据库导入导出工具 v3.4源码 源码描述: DataPie 功能:SQL server 2008、ORACLE与ACCESS 2007数据库的导入、导出、存储过程计算,支持EXCEL2007、EXCEL2003、ACCESS2007、 CSV文件导入数据库,支持CSV文件...

    《数据库系统及应用》作业.pdf

    定义一个(用户`)自定义表值函数 Find_Leader,该函数能根据参数@name 指定的员工名,在 YGB 中(从 叶子到根依次)查找其对应的全部领导返回。 然后,调用此函数,输出其对应的全部领导以及对应层次。例如上例中...

    Python基础教程(第2版.修订版)

    此后探讨了如何将Python与数据库、网络、C语言等工具结合使用,从而发挥出Python的强大功能,同时介绍了Python程序测试、打包、发布等知识。最后,作者结合前面讲述的内容,按照实际项目开发的步骤向读者介绍了几个...

    基于ssh和mysql的教材交易系统

    (2)如果想要使用自定义名字的话,就需要在系统源代码中把数据库配置dbcp.properties文件里的对应项修改一下, 以及hibernate.cfg.xml中数据源的对应配置项修改一下。 3、安装Tomcat服务器 安装Tomcat6.0 4、将...

    服务器上开设多个站点.doc

    5、设置安装项目的常用属性: Author:作者 Manufactuer:公司 Title:安装程序的标题 AddRemoveProgramsIco:设置为添加进来的ICO文件 如果不带数据库安装的话,可以将安装项目直接生成就可以了,如果Debug设置为...

    明日科技C#开发入门及项目实战

    内附1-19章的实战程序。 目录 第1章 c#语言及其开发环境 实例001 根据需要创建所需解决方案 实例002 统一窗体中控件的字体设置 ...实例219 打包程序时设置桌面图标 实例220 打包.net framework 4.0框架

    springboot参考指南

    启动时执行Liquibase数据库迁移 viii. 69. 批处理应用 i. 69.1. 在启动时执行Spring Batch作业 ix. 70. 执行器(Actuator) i. 70.1. 改变HTTP端口或执行器端点的地址 ii. 70.2. 自定义'白标'(whitelabel,可以...

    易语言700模块打包

    创建数据库模块(1.0).zip 创建时钟事件模块(1.0).zip 常用API函数(1.2).zip 常用功能模块(1.0).zip 常用软件性能优化模块(1.0).zip 成组随机数(1.0).zip 操作外部列表框_模块(1.0).zip 操作外部组合框_模块...

    asp.net知识库

    利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试...

    Spring Boot中文文档.rar

    spring boot中文文档,从安装到部署。 I. Spring Boot文件 1.关于文档 2.获得帮助 3.第一步 4.使用Spring Boot 5.了解Spring Boot功能 6.转向生产 7.高级主题 II。入门 8.介绍Spring Boot ...

    Collector资料收集管理器

    1、修改数据库格式,添加一些数据库信息,程序会把旧数据库自动转换到新版本的数据库格式,在同目录下面有后缀名为OLD的原数据库的备份文件,以防万一出错。 2、新版本已经把Collector.ini放到可执行文件的当前...

    EditGrid(可以编辑的网格控件)

    适用于数据库开发中的单据子表输入 也可做为属性列表框使用 同时还提供了内部使用的3个自定义控件: 数字输入控件 带多列下拉列表框的文本控件(可做参照输入) 下拉日期控件(可以代码呼出下拉日期) 请从...

    VB开发经验技巧宝典

    0002 如何解决Visual Basic安装后保存工程时出现中文乱码 0003 如何让Visual Basic开发环境支持鼠标滚轮 1.2 开发环境的设置 0004 如何为Visual Basic项目设置工程属性 0005 在开发环境中如何设置窗体的...

    羊驼CMS企业版 4.0.zip

    对于新手安装时可以导入 DEMO 数据研究一下。 羊驼CMS并不是针对小白用户的CMS系统。 他面对的主要客户是网站设计师,软件工程师,他的价值在于你可以快速架设一个灵活的网站,大大减少做基础架构开发的时间。 ...

    网管教程 从入门到精通软件篇.txt

    CDM:Visual dBASE自定义数据模块文件 CDR:CorelDRAW绘图文件;原始音频CD数据文件 CDT:CorelDRAW模板 CDX:CorelDRAW压缩绘图文件;Microsoft Visual FoxPro索引文件 CFG:配置文件 CGI:公共网关接口脚本...

    790个易模块打包

    世恒通用安装系统文件压缩模块.ec 是否为汉字.ec 输入法操作模块.ec 输入法上屏.ec 鼠标控制.ec 树型框操作类.ec 树型框增强.ec 数据库查找.ec 数据库到超级列表框.ec 数据库批量替换.ec 数据库增强.ec ...

    J2EE中文版指南 CHM格式 带全文检索

    在传递信息时选择属性还是体 197 定义脚本变量的标签 197 标签的相互协作 197 定义标签 198 标签处理器 198 标签库描述符 198 简单标签 200 标签属性 200 标签体 202 定义脚本变量的标签 203 与标签协作 205 例子 ...

    易语言程序免安装版下载

    编译生成安装软件时已支持打包静态编译后的程序,但需事先静态编译出该程序。 4. 升级加密狗驱动程序,增加了对 Windows 7, Vista 等操作系统的支持。 5. 操作系统界面功能支持库(shell.fne)中的“执行()”命令...

Global site tag (gtag.js) - Google Analytics