コード例 #1
0
ファイル: DBInstaller.cs プロジェクト: klnstp7/Instrument
        public override void Install(IDictionary stateSaver)
        {
            base.Install(stateSaver);
            string databaseServer = Context.Parameters["server"].ToString();
            string userName       = Context.Parameters["user"].ToString();
            string userPass       = Context.Parameters["pwd"].ToString();
            string targetdir      = Context.Parameters["targetdir"].ToString();
            string port           = Context.Parameters["port"].ToString();
            string websitename    = Context.Parameters["websitename"].ToString();

            NewWebSiteInfo siteinfo = new NewWebSiteInfo("", port, websitename, @targetdir);

            CreateNewWebSite(siteinfo);
            SetFileRole();
            //WriteToReg("WebSiteID");
            //if (this.Context.Parameters["deskcut"] == "1")    //创建桌面快捷方式
            //{
            //    CreateDeskTopCut();
            //}
            //if (this.Context.Parameters["pmenu"] == "1")    //创建应用程序菜单项
            //{
            //    CreateProCut();
            //}
            if (dataBaseType.Equals("SQL"))
            {
                ReWriteConfig();
                string connStr = string.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096", databaseServer, userName, userPass);
                string strSql  = "EXEC sp_attach_db  @dbname  =  N'" + dbName + "',"
                                 + "@filename1  =  N'" + targetdir + "DataBase\\GrgtInstrument.mdf',"
                                 + "@filename2  =  N'" + targetdir + "DataBase\\GrgtInstrument_Log.ldf'";
                ExecuteSql(connStr, "master", strSql);
            }
        }
コード例 #2
0
ファイル: DBInstaller.cs プロジェクト: klnstp7/Instrument
        public void CreateNewWebSite(NewWebSiteInfo siteInfo)
        {
            DirectoryEntry rootEntry = GetDirectoryEntry(entPath);

            string         newSiteNum   = GetNewWebSiteID();
            DirectoryEntry newSiteEntry = rootEntry.Children.Add(newSiteNum, "IIsWebServer");

            newSiteEntry.CommitChanges();

            newSiteEntry.Properties["ServerBindings"].Value = siteInfo.BindString;
            newSiteEntry.Properties["ServerComment"].Value  = siteInfo.NameOfWebSite;
            newSiteEntry.CommitChanges();
            DirectoryEntry vdEntry = newSiteEntry.Children.Add("root", "IIsWebVirtualDir");

            vdEntry.CommitChanges();
            string ChangWebPath = siteInfo.WebPath.Trim().Remove(siteInfo.WebPath.Trim().LastIndexOf('\\'), 1);

            vdEntry.Properties["Path"].Value = ChangWebPath;


            vdEntry.Invoke("AppCreate", true);                                 //创建应用程序

            vdEntry.Properties["AccessRead"][0]      = true;                   //设置读取权限
            vdEntry.Properties["AccessWrite"][0]     = true;
            vdEntry.Properties["AccessScript"][0]    = true;                   //执行权限
            vdEntry.Properties["AccessExecute"][0]   = false;
            vdEntry.Properties["AppFriendlyName"][0] = siteInfo.NameOfWebSite; //应用程序名称
            vdEntry.Properties["AuthFlags"][0]       = 1;                      //0表示不允许匿名访问,1表示可以匿名访问,3为基本身份验证,7为windows继承身份验证
            vdEntry.CommitChanges();

            #region 创建应用程序池
            string appPoolName = "GrgtInstrumentPool";
            if (!IsAppPoolName(appPoolName))
            {
                DirectoryEntry newpool;
                DirectoryEntry appPools = new DirectoryEntry("IIS://localhost/W3SVC/AppPools");
                newpool = appPools.Children.Add(appPoolName, "IIsApplicationPool");
                newpool.CommitChanges();
            }
            #endregion

            #region 针对IIS7

            int Version = int.Parse(GetIISVerstion());
            if (Version > 6)
            {
                #region 修改应用程序的配置(包含托管模式及其NET运行版本)
                ServerManager sm = new ServerManager();
                sm.ApplicationPools[appPoolName].ManagedRuntimeVersion = "v4.0";
                sm.ApplicationPools[appPoolName].Enable32BitAppOnWin64 = true;
                sm.ApplicationPools[appPoolName].ManagedPipelineMode   = ManagedPipelineMode.Integrated; //托管模式:Integrated为集成 Classic为经典
                sm.CommitChanges();
                #endregion
            }
            vdEntry.Properties["AppPoolId"].Value = appPoolName;
            vdEntry.CommitChanges();
            #endregion

            #region 更新脚本映射 网站.net framwork版本 (2.0/4.0)
            //启动aspnet_regiis.exe程序
            string           fileName  = Environment.GetEnvironmentVariable("windir") + @"\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe";
            ProcessStartInfo startInfo = new ProcessStartInfo(fileName);
            //处理目录路径
            string path  = vdEntry.Path.ToUpper();
            int    index = path.IndexOf("W3SVC");
            path = path.Remove(0, index);
            //启动ASPnet_iis.exe程序,刷新脚本映射
            startInfo.Arguments              = "-i -enable ";
            startInfo.WindowStyle            = ProcessWindowStyle.Hidden;
            startInfo.UseShellExecute        = false;
            startInfo.CreateNoWindow         = true;
            startInfo.RedirectStandardOutput = true;
            startInfo.RedirectStandardError  = true;
            Process process = new Process();
            process.StartInfo = startInfo;
            process.Start();
            process.WaitForExit();
            string errors = process.StandardError.ReadToEnd();
            if (errors != string.Empty)
            {
                throw new Exception(errors);
            }
            #endregion
        }