//iisInstall 安装 import dotNet; import console; import process; import fsys.acl; namespace fastcgi.iisInstall{ if(_STUDIO_INVOKED){ ..console.log("请先发布并生成 EXE 文件后再执行本程序") ..console.pause(); return; } var responseBufferLimit; if( ..console.askYesNo("是否需要修改默认缓冲区大小? FastCGI 的默认缓冲区大小为 4MB(0x400000), 在缓冲区未写满且输出未完成时不会立即发送数据到客户端, 如果服务端需要执行耗时操作并且希望即时发送数据,那么应当减小输出缓冲或者将其设置为 0。 如果希望单独设置个别目录的缓冲区大小请查看 aardio 文档 。") ){ responseBufferLimit = ..console.getNumber( "请输入数值:" ) } var domain = ..console.getText( '请输入启用 FastCgiModule(aardio)的网站,直接回车安装到所有网站\n:' ) domain = ..string.trim(domain); ..dotNet.import("Microsoft.Web.Administration"); var serverManager = ..Microsoft.Web.Administration.ServerManager(); while(#domain){ var err; try{ var config = serverManager.GetWebConfiguration(domain); var handlersSection = config.GetSection("system.webServer/handlers"); var handlersCollection = handlersSection.GetCollection(); var updateSite = function(){ for(i=1;handlersCollection.Count;1){ var element = handlersCollection[i] if(element["path"] == "*.aardio"){ element["scriptProcessor"] = ..io._exepath; if(responseBufferLimit!==null) element["responseBufferLimit"] = responseBufferLimit; return true; } } } if(!updateSite()){ var addElement = handlersCollection.CreateElement("add"); addElement["name"] = "aardio"; addElement["path"] = "*.aardio"; addElement["verb"] = "*"; addElement["modules"] = "FastCgiModule"; addElement["scriptProcessor"] = ..io._exepath; if(responseBufferLimit!==null) addElement["responseBufferLimit"] = responseBufferLimit; handlersCollection.AddAt(0, addElement); } } catch(e){ ..console.log(e) err = e; domain = ..console.getText( '请输入正确的网站名:' ) } if(!err) { break; } } if(!#domain){ var appHostConfig = serverManager.GetApplicationHostConfiguration(); var handlersSection = appHostConfig.GetSection("system.webServer/handlers"); var handlersCollection = handlersSection.GetCollection(); var updateHandler = function(){ for(i=1;handlersCollection.Count;1){ var element = handlersCollection[i] if(element["path"] == "*.aardio"){ element["scriptProcessor"] = ..io._exepath; if(responseBufferLimit!==null) element["responseBufferLimit"] = responseBufferLimit; return true; } } } if(!updateHandler()){ var addElement = handlersCollection.CreateElement("add"); addElement["name"] = "aardio"; addElement["path"] = "*.aardio"; addElement["verb"] = "*"; addElement["modules"] = "FastCgiModule"; addElement["scriptProcessor"] = ..io._exepath; if(responseBufferLimit!==null) addElement["responseBufferLimit"] = responseBufferLimit; handlersCollection.AddAt(0, addElement); } } var appHostConfig = serverManager.GetApplicationHostConfiguration(); var fastCgiSection = appHostConfig.GetSection("system.webServer/fastCgi"); var appsCollection = fastCgiSection.GetCollection(); var findFastCgiApp = function(){ for(i=1;appsCollection.Count;1){ var element = appsCollection[i] if(element["fullPath"] == ..io._exepath){ return true; } } } if(!findFastCgiApp()){ var appElement = appsCollection.CreateElement("application"); appElement["fullPath"] = ..io._exepath; appElement["arguments"] = ""; appElement["instanceMaxRequests"] = 10000; appElement["requestTimeout"] = 300; appElement["maxInstances"] = 8; appElement["idleTimeout"] = 300; appElement["activityTimeout"] = 600; appElement["protocol"] = "NamedPipe"; appElement["flushNamedPipe"] = false; appsCollection.AddAt(0, appElement); } if(_WIN_64){ var appPools = serverManager.ApplicationPools; for(i=1;appPools.Count;1){ var pool = appPools[i] if(pool.Name){ appPools[pool.Name].Enable32BitAppOnWin64 = true; } } } serverManager.CommitChanges(); ..fsys.acl.icacls( ..io._exedir,"/T","/grant","NT AUTHORITY\IUSR:RXM"); ..fsys.acl.icacls( ..io._exedir,"/T","/grant","BUILTIN\IIS_IUSRS:RXM"); ..console.log("FastCgiModule(aardio)已安装成功!") ..console.pause() } /**intellisense() fastcgi.iisInstall = 自动安装注册 IIS 服务器 *.aardio 处理程序映射 end intellisense**/