安装包制作点滴

来源:互联网 发布:java 调用c 编辑:程序博客网 时间:2024/04/30 13:37

ASP。NET程序作安装包时,会遇上两个大问题,一是网站配置,二是数据库安装。几天研究后,写点心得

1.网站配置

    有几个棘手的问题,1.新建站点,要分XP系统和WIN2000/2003系统,XP系统下的IIS只能是配置到默认站点或新建虚拟站点。2.设置站点路径。3.设置站点权限,如很多时候都需要写入权限。4.设置默认文档。5.设置ASP。NET版本

    解决办法:使用微软给我们提供的好东西iisweb.vbs,所在路径:c:/windows/system32/iisweb.vbs。设置默认文档和权限可以用DirectoryEntry对象来解决。

  1. DirectoryEntry root = new DirectoryEntry(iis0);
  2. root.Properties["AccessWrite"][0] = true;
  3. root.Properties["DefaultDoc"].Value = "Default.aspx";
  4. root.CommitChanges();

 

2.数据库配置

    使用ADO来解决这个问题,使用一个SQL工具,把数据库表、初始数据生成为SQL脚本,用ADO来执行脚本。而如果使用OSQL。EXE,会有文件大小的限制。如果需要使用简版数据库,可以统一把SQL实例建到./SQLEXPRESS,因为简版SQL连接必须使用./SQLEXPRESS.如果是企业版,还需要重启服务。如果需要使用自定义的SQL帐户,此时SQL还有一个问题,权限的问题,SQL2005默认不可以连接,这时需要修改注册表,使用混合认证。HKEY_LOCAL_MACHINE/Software/Microsoft/Microsoft SQL Server/MSSQL.1/MSSQLServer下修改键LoginMode 值2

  1. #region 初始化数据库
  2.         private void ReStartSqlServer()
  3.         {
  4.             Process p = new Process();
  5.             p.StartInfo.FileName = "cmd.exe";
  6.             p.StartInfo.UseShellExecute = false;
  7.             p.StartInfo.RedirectStandardInput = true;
  8.             p.StartInfo.RedirectStandardOutput = true;
  9.             p.StartInfo.RedirectStandardError = true;
  10.             p.StartInfo.CreateNoWindow = true;
  11.             p.Start();
  12.             p.StandardInput.WriteLine("net stop mssql$sqlexpress");
  13.             p.StandardInput.WriteLine("exit");
  14.             p.WaitForExit();
  15.             p.Close();
  16.             p.Start();
  17.             p.StandardInput.WriteLine("net start mssql$sqlexpress");
  18.             p.StandardInput.WriteLine("exit");
  19.             p.WaitForExit();
  20.             p.Close();
  21.         }
  22.         public void CreateDbByExcuteSQL()
  23.         {
  24.             string connStr = @"server=./SQLEXPRESS;Initial Catalog=master;Integrated Security=SSPI";
  25.             StringBuilder sb = GetSqlFile(physicaldir + @"DBDATA/createdatabase0.sql");
  26.             try
  27.             {
  28.                 ExecuteSql(connStr, sb.ToString());
  29.                 sb = this.GetSqlFile(physicaldir + @"DBDATA/createdatabase1.sql");
  30.                 ExecuteSql(connStr, sb.ToString());
  31.             }
  32.             catch (Exception ex)
  33.             {
  34.                 throw ex;
  35.             }
  36.         }
  37.         private int ExecuteSql(string connStr, string sql)
  38.         {
  39.             SqlConnection conn = new SqlConnection(connStr);
  40.             SqlCommand cmd = new SqlCommand(sql, conn);
  41.             conn.Open();
  42.             try
  43.             {
  44.                 return cmd.ExecuteNonQuery();
  45.             }
  46.             catch(Exception ex)
  47.             {
  48.                 throw ex;
  49.             }
  50.             finally
  51.             {
  52.                 conn.Close();
  53.             }
  54.         }
  55.         private StringBuilder GetSqlFile(string pFileName)
  56.         {
  57.             StringBuilder sqlTemp = new StringBuilder();
  58.             sqlTemp.Append(File.ReadAllText(pFileName, System.Text.Encoding.GetEncoding("GB2312")));
  59.             return sqlTemp;
  60.         }
  61.         #endregion
    原创粉丝点击