安装程序制作

来源:互联网 发布:js base64解码 中文 编辑:程序博客网 时间:2024/04/30 14:15

安装文件制作总结
一、创建基本安装部署项目
1. 在解决方案资源管理器,右击解决方案添加新建项目安装部署项目Web安装项目,例如命名为WebSetup。
2. 右击WebSetup项目视图文件系统。
(1)添加你所需要安装的Web程序(例如:WebApp)。在文件系统中右击Web应用程序文件夹项目输出选择WebApp,同时选种主输出何内容输出。
(2)添加相关的文件,例如.jpg 、.xml等文件(根据帮助可知这些文件无法自动添加到安装文件中),注意:原文件怎么样存放的,添加时也要以同样的文件夹存放。
例如,原文件存放在//aa/cc/bb.txt,则添加文件bb.txt时也应如此,右击web应用程序文件夹添加web文件夹(命名为aa)右击aa添加web文件夹(命名为cc)右击cc添加文件(bb.txt).
3. 右击WebSetup项目视图用户界面。
1) 添加你所需要的界面。安装启动添加对话框文本框(A),如果添加了文本框则必须要上移(右击要上移的文本框上移)到安装地址之上。
2) 如果有许可协议对话框,则在文件系统中要添加一个.rtf格式的文件(注意:改文件一定要时通过word另存为.rtf格式得到,不可以通过记事本创建文件后把扩展名改为.rtf而得到,那样将不显示许可协议),右击许可西医对话框属性把licenseFile属性选为你所要添加的许可协议文件。
(属性BannerBitmap  安装对话框中的图片;Sunken  是否凹凸显示。其他对话框相同)
以上是安装文件制作的基本过程。如果要安装数据库,和用户自定义的一些操作如下:

二、添加自定义操作----安装数据库
1) 在用户界面添右击添加对话框文本框(A)如果添加了文本框则必须要上移(右击要上移的文本框上移)到安装地址之上。
2) 如果只安装一个数据库就把其Edit2Visible,Edit3Visible,Edit4Visible设置为false.把Edit1property定义一个变量名,例如PARA1。
 3) 自定义用户操作,在资源管理器界面右击资源管理器新建C#(也可以是VB.NET),选择类库,命名为WebInstall 。
 4) 新建项目会自动生成一个class1.cs文件,把次文件删除。右击WebInstall添加新项安装类,命名为Install.cs。
5)右击Install.cs视图设计界面,然后在服务器资源管理器中添加数据库master的连接,添加好后把这个连接拖到Install的设计界面。
6)在Install.cs文件中添加以下代码
 注:要添加应用添加应用
using System.Reflection;
using System.Data;
using System.Data.SqlClient;
using System.IO;
安装数据库代码
 /// <summary>
  /// 获得配置文件中嵌入的文本文件
  /// </summary>
  /// <param name="Name">文件名</param>
  /// <returns></returns>
  private string GetSql(string Name)
  {   
   Assembly Asm = Assembly.GetExecutingAssembly();
   Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "."+Name);
   StreamReader reader = new StreamReader(strm);
   return reader.ReadToEnd();
  }

  /// <summary>
  /// 指定的数据库执行SQL语句
  /// </summary>
  /// <param name="DatabaseName">数据库名</param>
  /// <param name="sqlstring">SQL语句</param>
  /// <returns></returns>
  private void ExecuteSql(string DataBaseName,string sqlstring)
  {
   System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(sqlstring,sqlConn);

   Command.Connection.Open();
   Command.Connection.ChangeDatabase(DataBaseName);
   try
   {
    Command.ExecuteNonQuery();
   }
   finally
   {
    Command.Connection.Close();
   }

  }

  /// <summary>
  /// 创建数据库及数据库表
  /// </summary>
  /// <param name="DBName">数据库名</param>
  /// <param name="assemblyName">配件中数据库脚本资源的名称</param>
  /// <returns></returns>
  protected bool CreateDBAndTable(string DBName)
  {
   bool Restult = false;
   try
   {
     ExecuteSql("master","CREATE DATABASE " + DBName);
     ExecuteSql(DBName,GetSql("bbssql.txt"));
     Restult = true;
   
   }  
   catch(Exception ex)
   {
//次段代码为调试用可以不添加

    StreamWriter sw = new StreamWriter(@"c:/SrInforSys.txt");
    sw.WriteLine("[SrInforSys案装错误]");
    sw.WriteLine(ex.Message.ToString());    
    sw.Close();      
 }
   return Restult;
  }
  
   
  /// <summary>
  /// 安装数据库
  /// </summary>
  /// <param name="stateSaver"></param>
  public override void Install(IDictionary stateSaver)
  {
   base.Install (stateSaver);
   if(!CreateDBAndTable(this.Context.Parameters["dbname1"].ToString()))
    throw new ApplicationException("创建数据库时出现严重错误!");
  }
在添加安装数据库时一定要有创建数据库的脚本,并且把它存为.txt文件添加到WebInstall项目中了,右击该文件(例如,database.txt)&#61664;属性&#61664;生成操作,该为嵌入资源(这点很中要)。
7)生成WebInstall.dll文件。在解决方案资源管理器中右击&#61664;WebSetup项目&#61664;视图&#61664;在文件系统,右击Web应用程序文件夹&#61664;添加&#61664;项目输出&#61664;选择WebInstall(主输出)&#61664;确定
8)在解决方案资源管理器中右击&#61664;WebSetup项目&#61664;视图&#61664;自定义操作,在自定义操作界面区中右击安装&#61664;添加自定义操作&#61664;在Web应用程序文件夹&#61664;主输出来自WebInstall(活动)
添加完后右击主输出来自WebInstall(活动)&#61664;属性,把customeActionData设置为/dbname=[PARA1](此处的dbname为要接受的参数名,PARA1就是前面添加的文本框中Edit1property)。
9)编译WebSetup程序就可以了。
如果有两个或者多个数据库时,就把文本框的其他输入框设置为true(Edit2Visible, Edit3Visible , Edit4Visible),并且在自定义操作中把customeActionData属性改为/dbname1=[PARA1] /dbname2=[PARA2] /dbname3=[PARA3] /dbname4=[PARA4](有几个写几个)中间必须用一个空格分隔。

三、添加启动条件
在安装我们做好的程序总是要有一些启动条件的,例如必须有.net framework, SQL等。以下就以这SQL为例子
1)在解决方案资源管理器中右击&#61664;WebSetup项目&#61664;视图&#61664;启动条件&#61664;目标计算机上的要求&#61664;添加注册表启动条件&#61664;把名字改为search of SQL&#61664;属性,更改其属性
Property----------------SEARCHOFSQL
RegKey----------------SOFTWARE/Microsoft/MSSQLServer/Setup(指定要搜索的表项)
Root--------------------vsdrrHKLM(指定要搜索的注册表根)
Value-------------------SQLPath(要搜索的注册表值)
2)在启动条件界面,右击启动条件&#61664;添加启动条件命名为SQL Server,更改属性
Condition--------------- SEARCHOFSQL
Message-----------------您本机上没有SQL Server 2000,请先安装!
如果添加其他的启动条件类似。
四、卸载程序
1)在WebInstall项目中的Install.cs中添加如下代码
private bool DeleteDatabase()
  {
   try
   { 
    ExecuteSql(此方法就时前面案扎数据库的方法)("master","USE MASTER IF EXISTS (SELECT NAME FROM SYSDATABASES WHERE NAME=’aa’) DROP DATABASE aa");
    return true;
   }
   catch
   {
    return false;
   }
  }  
public override void Uninstall(IDictionary savedState)
  {
   if (savedState == null)
    throw new ApplicationException("未能卸载!");
   else
   {
    base.Uninstall (savedState);
    if(!DeleteDatabase())
     throw new ApplicationException("卸载过程中发生错误,未能卸载!");
   }  
  }
2)WebSetup项目的自定义操作中,右击卸载&#61664;添加自定义操作&#61664;在Web应用程序文件夹&#61664;主输出来自WebInstall(活动)

五、添加删除垃圾文件
这一点不一定用的到,不过有一些老板认为做处来的安装程序太小了给用户看不时很好就添加一些垃圾文件,让安装程序变大点,安装完后又删除。
在WebInstall项目中的Install.cs中添加如下代码

 private void DeleteFile()
  {
   string stLocation;
   Assembly asm = Assembly.GetExecutingAssembly();
   stLocation = asm.Location;  
   stLocation = stLocation.Substring(0,stLocation.LastIndexOf("//")) +"//要删除的文件名";
   System.IO.File.Delete(stLocation);    
  }
(此文件事先添加到Web应用程序文件夹下)
把DeleteFile()方法添加到 public override void Install(IDictionary stateSaver)中即可。



把.NET程序部署到没有安装.NET Framwork的机器上 ?

http://www.microsoft.com/China/Community/program/originalarticles/TechDoc/deployNETApp.mspx

在微软官方网站下载Microsoft Visual Studio .NET 2003 引导程序插件
文件名叫:PluginInstaller.msi
下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=627921a0-d9e7-43d6-a293-72f9c370bd19&displaylang=zh-cn
你安装了这个插件然后用IDE自带的安装部署即可,他会在你的安装包里另加三个文件:MDAC 2.8 和 .NetFramework 和中文语言包,并且自动判断系统是否已安装框架。


Microsoft Visual Studio .NET 2003制作安装程序

http://dev.csdn.net/article/28/article/27/27847.shtm

部署ASP.NET的三大技术

http://tech.ccidnet.com/pub/article/c295_a68309_p1.html

在制作安装程序,不知如何才能将数据库结构及数据导入,高分求Duwamish7制作打包部署程序的源码及方法

http://community.csdn.net/Expert/topic/3368/3368253.xml?temp=.7017328

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

http://blog.csdn.net/greystar/archive/2004/08/17/76716.aspx

用Vs.net制作安装程序

http://www.showyou.net/MyCode/ArticleView/Article_4641.html

自动安装SQL Server数据库

http://www.cnblogs.com/wangsaokui/articles/9769.aspx

安装程序时读取路径的问题

http://blog.joycode.com/fogshadow/archive/2004/04/30/20589.aspx

asp.net打包的问题(1.修改文件夹访问权限;2.设置起始页)

http://community.csdn.net/Expert/topic/3380/3380589.xml?temp=8.585757E-02


楼主,GetSql(string Name)
如果文件中的sql语句是数据库直接导出的,例如:
CREATE TABLE [news] (
 [id] [int] IDENTITY (1, 1) NOT NULL ,
 [newsTitle] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
 [newsBody] [text] COLLATE Chinese_PRC_CI_AS NULL ,
 [newsTime] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
 [newsAuthor] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
 [newsType] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

 

ado.net中的sql语句是不支持关键字go的吧,所以我认为用批处理比较的好。
ExecuteSql("master","CREATE DATABASE "+ strDBName);
// 执行批处理文件
string dir=this.Context.Parameters["dir"];
string file = dir + @"c:/Restore.bat";
System.Diagnostics.Process.Start( file) ;


c:/Restore.bat内容:
osql  -E -S -i C:/Restore.txt



 

原创粉丝点击