用VisualStudio制作Web安裝程序_第1頁
用VisualStudio制作Web安裝程序_第2頁
用VisualStudio制作Web安裝程序_第3頁
用VisualStudio制作Web安裝程序_第4頁
用VisualStudio制作Web安裝程序_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

如何用VS2005制作Web安裝程序網(wǎng)站完成后,需要部署到目標(biāo)機(jī)器上,方法有很多,直接把文件Copy到目標(biāo)機(jī)器上,執(zhí)行SQL腳本,配置IIS,這樣可以做到;也可以使用InstallShield這樣到專業(yè)制作軟件來打包。本篇文章是使用VS2005自帶到安裝部署工具來制作exe安裝文件。涉及到到內(nèi)容包括:使用安裝部署工具,建立數(shù)據(jù)庫,配置IIS,文件操作,注冊表等。參考了網(wǎng)上關(guān)于使用VS制作安裝程序的文章。環(huán)境:Windows2003+VS2005+SQL2005。注:本文只是為了實(shí)現(xiàn),沒有強(qiáng)調(diào)方法,變量等的寫法標(biāo)準(zhǔn)。使用VS2005制作安裝程序的時(shí)候,有多種選擇,如下圖:我想一般常用的可能就最上面的兩種。當(dāng)使用Web安裝項(xiàng)目時(shí),執(zhí)行制作好的msi安裝文件時(shí),會發(fā)現(xiàn)實(shí)際上是添加虛擬目錄而不是添加網(wǎng)站,而且無法選擇安裝目錄,當(dāng)然,可以自己寫腳本來對IIS進(jìn)行修改。不過在這篇文章里,將不采用此模式。本篇文章用的是使用“安裝項(xiàng)目”,就和打包WinForm程序一樣,把Web文件部署到目標(biāo)機(jī)器上,然后重寫install方法,配置IIS,執(zhí)行SQL腳本,修改web.config文件等。在開始整個過程之前,需要先了解一下“預(yù)編譯”的概念,MSDN上的說明是:默認(rèn)情況下,在用戶首次請求資源(如網(wǎng)站的一個頁)時(shí),將動態(tài)編譯ASP.NET網(wǎng)頁和代碼文件。第一次編譯頁和代碼文件之后,會緩存編譯后的資源,這樣將大大提高隨后對同一頁提出的請求的效率。請查閱MSDN"預(yù)編譯”相關(guān)文檔。準(zhǔn)備一個文件DBSQL.txt,在里面包含連接數(shù)據(jù)庫后需要執(zhí)行的SQL腳本,在本例中使用了簡單的一個CreateTabel的SQL。好了,現(xiàn)在開干,吼吼 打開VS2005,打開一個網(wǎng)站項(xiàng)目,這里是打開的本地localhost,如圖:解決方案資源管理器-http://localho5t/ ▼牛Xhttp^Z/localhost/.^^uick^tartvSOSReports匕"Report5erver

新加一個頁面,隨便取個名字(本文中為ClientCallback.aspx),然后寫一個簡單的按鈕事件即可,這不是本文的重點(diǎn),由你隨意處理A_A再添加web配置文件即web.config,在下添加此文件到時(shí)候是需要發(fā)布到目標(biāo)機(jī)器上的。(關(guān)于連接數(shù)據(jù)庫字符串,VS2005里面有專門的connectionStrings,本文未使用,可查閱幫助)點(diǎn)擊生成網(wǎng)站,訪問頁面,ok!選擇菜單生成=》發(fā)布網(wǎng)站:點(diǎn)擊確定后,網(wǎng)站已經(jīng)生成,這些就是需要部署到目標(biāo)機(jī)器上的所有文件。點(diǎn)擊菜單文件=》添加=》新建項(xiàng)目,添加安裝部署項(xiàng)目,如圖:

添加安裝項(xiàng)目類庫:

刪除默認(rèn)的Class1.cs,新加一個安裝程序類文件,名為MyInstaller.cs:在此項(xiàng)目中,添加對System.EnterpriseServices和System.DirectoryServices的引用,在操作IIS的時(shí)候,需要用到。在文件中添加:usingSystem;usingSystem.IO;usingSystem.DirectoryServices;usingSystem.Reflection;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Configuration.Install;usingSystem.Management;usingSystem.Collections;usingMicrosoft.Win32;usingSystem.Collections.Specialized;如果編譯的時(shí)候出錯,請?zhí)砑酉嚓P(guān)引用。修改文件如下圖:3usingSystem;usirigSystem.10;heingSystern.DirectoryServices;nisingSystem.Re£1ec+ion;usirigSystem.Data;iisingSystem.Data.SqlClient;iisingSystem.Contion.工nstall;iieingSystem.M:=irL:=Lgement;□il:=iitiespaceSetupClassLibr:arypartial/////////privateSystpartial/////////privateSystvsuirimar¥)必需的設(shè)計(jì)器變星。'■■:/sujrimary)em.CDn-ipurierLtMudel.ICuntairLHi-^omponerLtE=mill:潤牛設(shè)計(jì)器生成的代瑪注意要手動添加Installer!將DBSQL.txt文件放到此項(xiàng)目中,在屬性中設(shè)置為“嵌入的資源”曰高蟾復(fù)制到輸出目錄不復(fù)制[生成操作嵌入的資源 3自定義工具無自定yxa命名空間編譯,:雜攻內(nèi)容完整路役嵌雙的資源'安件名DBbyL.txt回到MyWebSetup項(xiàng)目,點(diǎn)擊查看屬性,可以設(shè)置安裝文件到顯示相關(guān)信息,如圖

屋性MyWebSetup部署項(xiàng)目屬性E41S?基XT或泰項(xiàng).]AddRemoveProgramsIcon咒無)Author戒蜃司名稱DescriptionDetectNewerlnstalledVersionTrueInstallAllUser^FalseKeywordsLocalization:Chinese(Simplified)/Manufacturer券愁司名稱ManufacturerUrlPostBuildEventPreBuiidEventProductcodep{C8E0A538^D40-4AB9-A2AB^A58F:2'17DD2B}ProductNameMyV?eb5etupRemovePre^ibusVersionsFalseRunPostBuildEvent成功生成時(shí)5earchPathSubjectSupportPhoneSupportUrlTargetPlatform舞&TitleMyWeb5etupUpgradeCode{12A4703E-4C06-4FCE-865E-F8CA695E04A5}Version1.0.0選擇文件系統(tǒng),如圖:然后:

(在文件系統(tǒng)中,在屬性里面可以設(shè)置安裝程序默認(rèn)到安裝路徑)添加一個叫bin文件夾并添加在生成網(wǎng)站時(shí)bin目錄下的dll文件,如圖:自定敏操作(MyWebSetup). (MyWebSetup)'WebvconfigMylnstaller.Designer.c.s.起始頁>目標(biāo)計(jì)算機(jī)上的文件系統(tǒng)

雷L3應(yīng)用程序文件夾'.?bin福加文件L,>目標(biāo)計(jì)算機(jī)上的文件系統(tǒng)

雷L3應(yīng)用程序文件夾'.?bin福加文件L,,,查找范圍血|匚bin 月|康▼口名稱類型占叩_Web_-4n7yYw8.dll;桌面我的項(xiàng)目我的電藺文件名(山:在應(yīng)用程序文件夾下在生成網(wǎng)站時(shí)目錄下的文件,添加后如圖:自定義操作(MyWeb5etup).文(MyWebSetup)Web.configMyInstaller.Designer.es目標(biāo)計(jì)算機(jī)上的文件系統(tǒng)應(yīng)用程序文件夾國bin以目標(biāo)計(jì)算機(jī)上的文件系統(tǒng)應(yīng)用程序文件夾國bin以用戶的霍序瞧單以用戶臭面名稱ILibin司ClientCallback.aspK筒PrecompiledApp.config^Web.config貳主輸出來自泡upClm/Librmr?(活動}'類查立祥夾文件文件文件輸出選擇“用戶界面編輯器”,添加兩個文本框A和B,A將作為安裝新站點(diǎn)后的IIS設(shè)置,B將作為數(shù)據(jù)庫操作時(shí)的參數(shù)設(shè)置,調(diào)整位置后如下:Setup安裝完成Setup安裝完成已成功安裝'泓tup□單擊“關(guān)閉”退出。話使用WindowsUpdate檢查是否有重要的.HETFramework更新口取消<上一取消<上一步侶)關(guān)閉g調(diào)整A的屬性,這里只選擇了顯示兩個輸入框,屬性分別為IISSERVER和PORT,值為localhost和9998,其他的你可以自己調(diào)整。如圖:

屋性 W早X文本框(A)用戶界面對話皰屈性 ■匱1金1..■日雜頂BannerBitmap丫默認(rèn)值)BannerTex^BannerTextBodyText輸犬新網(wǎng)站的設(shè)置EditlLabel服茶器EditlPropertyII55ERVEREditlValuelocalhostEdit1VisibleTrueEditZLabel端口Edit^PropertyPORTEdit2Value9998Edit^isibleTrueEditSLabelEdit3;Edit3Propert^-EDIT明Edit3ValueEditSVisibleFalseEdit4LabelEdit4:Edit4PropertyEDITA4Edit4ValueEdit4VisibleFalse1文本框B的設(shè)置如下:屬性▼基X文本挺(S)用戶界面對話柩雇性?■S雜項(xiàng)BannerBitmap默認(rèn)值)BannerText-BannerTextBodyText數(shù)據(jù)庫設(shè)置EditlLabel數(shù)據(jù)庫服務(wù)器EditlPr叩ertyDB5ERVERNAMEEditlvaluelocalEdit1VisibleTrueEdit2Label數(shù)據(jù)庫名稱Edit2PropertyDBNAMEEdit2ValueFutureEdit2VfcibleTrueEdit3Label登錄賬號Edit3PropertyU5ERNAMEEditS/alueEdib3V'isibleTrueEdit4Label登錄密碼Edit4Property-'PASSWORDEdit4ValueEdit4VrsibleTrueOK,文本框設(shè)置完畢。當(dāng)然,你還可以選擇其他的多種文本框,如協(xié)議什么的。

打開自定義操作面板:自定受操作(MyWebSetup)用戶界:^ly^ebSetup)曰提*添加自定爻操作(由…g對 然后:自定曳操作(MyWebSetupj-鬲自愚然后:自定曳操作(MyWebSetupj-鬲自愚s作?LL安^■a主輸出來自寵tupCls浴Library(活的}屬性主輸出來自SetupCiasfLj提交'回摩Lj提交'回摩',卸載5(Name)ConditionCustomActionDataEntryPointInstallet^las§/SourcePath在CustomActionData中輸入:/dbname=[DBNAME]/server=[DBSERVERNAME]/user=[USERNAME]/pwd=[PASSWORD]/iis=[IISSERVER]/port=[PORT]/targetdir="[TARGETDIR]\"這些參數(shù)就是文本框A和B上的輸入框的值,在安裝過程中可以獲得,然后進(jìn)行處理。至此,基本的安裝文件已經(jīng)制作完畢。進(jìn)行生成,然后點(diǎn)擊安裝,可以看到文件已經(jīng)復(fù)制到了相應(yīng)到目錄。接下來就要接收參數(shù)對IIS和數(shù)據(jù)庫進(jìn)行處理。打開SetupClassLibrary項(xiàng)目下的MyInstaller.Designer.cs,修改此文件。申明幾個變量:privateSystem.Data.SqlClient.SqlConnectionsqlConn;privateSystem.Data.SqlClient.SqlCommandCommand;privatestringDBName;privatestringServerName;privatestringAdminName;privatestringAdminPwd;privatestringiis;privatestringport;privatestringdir;publicstaticstringVirDirSchemaName="IIsWebVirtualDir”;privatestring_target;privateDirectoryEntry_iisServer;privateManagementScope_scope;privateConnectionOptions_connection;連接數(shù)據(jù)庫服務(wù)器到方法:#regionConnectDatabase連接數(shù)據(jù)庫privateboolConnectDatabase(){if(Command.Connection.State!=ConnectionState.Open){try{Command.Connection.Open();}catch(Exceptione){returnfalse;}}returntrue;}#endregion如果不能正確連接數(shù)據(jù)庫服務(wù)器,請檢查你的連接字符串,或者將連接字符串寫入文件查看。不好意思,我不知道如何對這種安裝部署程序進(jìn)行debug,sorry咯!讀取SQL文件的方法:#regionGetSql從文件中讀取SQL,在讀取包含SQL腳本的文件時(shí)需要用到,參考自MSDNprivatestringGetSql(stringName){try{AssemblyAsm=Assembly.GetExecutingAssembly();Streamstrm=Asm.GetManifestResourceStream(Asm.GetName().Name+"."+Name);StreamReaderreader=newStreamReader(strm);returnreader.ReadToEnd();}catch(ExceptiongetException){thrownewApplicationException(getException.Message);}}#endregion可以將此需要執(zhí)行的SQL腳本放在此文本中執(zhí)行SQL語句的方法:#regionExecuteSql執(zhí)行SQL語句,參考自MSDNprivatevoidExecuteSql(stringDataBaseName,stringsqlstring){Command=newSystem.Data.SqlClient.SqlCommand(sqlstring,sqlConn);if(ConnectDatabase()){try{Command.Connection.ChangeDatabase(DataBaseName);Command.ExecuteNonQuery();}finally{Command.Connection.Close();}}}#endregion創(chuàng)建數(shù)據(jù)庫及數(shù)據(jù)庫表:#regionCreateDBAndTable創(chuàng)建數(shù)據(jù)庫及數(shù)據(jù)庫表,參考自MSDNprotectedboolCreateDBAndTable(stringDBName)boolRestult=false;try{ExecuteSql("master”,"USEMASTERIFEXISTS(SELECTNAMEFROMSYSDATABASESWHERENAME='"+DBName+"')DROPDATABASE"+DBName);ExecuteSql("master","CREATEDATABASE"+DBName);ExecuteSql(DBName,GetSql("DBSQL.txt"));Restult=true;}Catch{}returnRestult;}#endregion從備份文件恢復(fù)數(shù)據(jù)庫及數(shù)據(jù)庫表#regionRestoreDB從備份文件恢復(fù)數(shù)據(jù)庫及數(shù)據(jù)庫表//////從備份文件恢復(fù)數(shù)據(jù)庫及數(shù)據(jù)庫表//////數(shù)據(jù)庫名///配件中數(shù)據(jù)庫腳本資源的名稱///protectedboolRestoreDB(stringDBName){dir=this.Context.Parameters["targetdir"];boolRestult=false;stringMSQL="RESTOREDATABASE"+DBName+"FROMDISK='"+dir+@"data.bak'"+"WITHMOVE'Test'TO'"+@"c:\"+DBName+".mdf',"+"MOVE'Test_log'TO'"+@"c:\"+DBName+".ldf";try{ExecuteSql("master","USEMASTERIFEXISTS(SELECTNAMEFROMSYSDATABASESWHERENAME='"+DBName+"')DROPDATABASE"+DBName);ExecuteSql("master",MSQL);Restult=true;}finally{//刪除備份文件try{File.Delete(dir+@"data.bak");}catch{}}returnRestult;}#endregion這里可以到注冊表讀取SQLServer的安裝路徑,把恢復(fù)后的數(shù)據(jù)庫文件放到data目錄地下。在本例中,只是實(shí)現(xiàn)了恢復(fù),并未進(jìn)行標(biāo)準(zhǔn)的操作。其中Test和Test_log時(shí)備份時(shí)數(shù)據(jù)庫的文件信息。如果想要從備份文件中恢復(fù),請把文件包含到項(xiàng)目里并且設(shè)置和DBSQL.txt一樣,嵌入到程序里。最后執(zhí)行刪除。不過我想應(yīng)該有辦法不把文件先安裝到目標(biāo)機(jī)器上,而是有方法想讀取DBSQL.txt文件一樣,直接恢復(fù)數(shù)據(jù)庫,不過確實(shí)沒想到辦法,失??!網(wǎng)站安裝好后,需要設(shè)置web.config文件,這里只涉及到連接字符串到設(shè)置,其他的可以同理修改。從備份文件恢復(fù)數(shù)據(jù)庫及數(shù)據(jù)庫表#regionWriteWebConfig修改web.config的連接數(shù)據(jù)庫的字符串privateboolWriteWebConfig。{System.IO.FileInfoFileInfo=newSystem.IO.FileInfo(this.Context.Parameters["targetdir"]+"/web.config");if(!FileInfo.Exists){thrownewInstallException("Missingconfigfile:"+this.Context.Parameters["targetdir"]+"/web.config");}System.Xml.XmlDocumentxmlDocument=newSystem.Xml.XmlDocument();xmlDocument.Load(FileInfo.FullName);boolFoundIt=false;foreach(System.Xml.XmlNodeNodeinxmlDocument["configuration"]["appSettings"]){if(Node.Name=="add"){if(Node.Attributes.GetNamedItem("key").Value=="ConnectionString")Node.Attributes.GetNamedItem("value").Value=String.Format("PersistSecurityInfo=False;DataSource={0};database={1};UserID={2};Password={3};PacketSize=4096;Pooling=true;MaxPoolSize=100;MinPoolSize=1",ServerName,DBName,AdminName,AdminPwd);FoundIt=true;}}}if(!FoundIt){thrownewInstallException("Errorwhenwritingtheconfigfile:web.config");}xmlDocument.Save(FileInfo.FullName);returnFoundIt;}#endregion從備份文件恢復(fù)數(shù)據(jù)庫及數(shù)據(jù)庫表#regionWriteRegistryKey寫注冊表。安裝部署中,直接有一個注冊表編輯器,可以在那里面設(shè)置。privatevoidWriteRegistryKey(){//寫注冊表RegistryKeyhklm=Registry.LocalMachine;RegistryKeycqfeng=hklm.OpenSubKey("SOFTWARE”,true);RegistryKeyF=cqfeng.CreateSubKey("cqfeng");F.SetValue("FilePath”,"kkkk");}#endregion操作IIS,建立網(wǎng)站等??蓞⒖迹河肰S2005制作網(wǎng)頁對IIS進(jìn)行操作#regionConnect連接IIS服務(wù)器publicboolConnect(){if(iis==null)returnfalse;try{_iisServer=newDirectoryEntry("IIS://"+iis+"/W3SVC/1”);_target=iis;_connection=newConnectionOptions();_scope=newManagementScope(@"\\"+iis+@"\root\MicrosoftIISV2",_connection);_scope.Connect();}catch{returnfalse;}returnIsConnected();}publicboolIsConnected(){if(_target==null||_connection==null||_scope==null)returnfalse;return_scope.IsConnected;}#endregion#regionIsWebSiteExists判斷網(wǎng)站是否已經(jīng)存在publicboolIsWebSiteExists(stringserverID){try{stringsiteName="W3SVC/"+serverID;ManagementObjectSearchersearcher=newManagementObjectSearcher(_scope,newObjectQuery("SELECT*FROMIIsWebServer"),null);ManagementObjectCollectionwebSites=searcher.Get();foreach(ManagementObjectwebSiteinwebSites){if((string)webSite.Properties["Name"].Value==siteName)returntrue;}returnfalse;}catch{returnfalse;}}#endregion#regionGetNextOpenlD獲得一個新的ServerlDprivateintGetNextOpenID(){DirectoryEntryiisComputer=newDirectoryEntry("IIS://localhost/w3svc");intnextID=0;foreach(DirectoryEntryiisWebServeriniisComputer.Children){stringsname=iisWebServer.Name;try{intname=int.Parse(sname);if(name>nextID){nextID=name;}}catch{}}return++nextID;}#endregion#regionCreateWebsite添加網(wǎng)站publicstringCreateWebSite(stringserverID,stringserverComment,stringdefaultVrootPath,stringHostName,stringIP,stringPort){try{ManagementobjectoW3SVC=newManagementObject(_scope,newManagementPath(@"IIsWebService='W3SVC'"),null);if(IsWebSiteExists(serverID)){return"SiteAlreadyExists...";}ManagementBaseObjectinputParameters=oW3SVC.GetMethodParameters("CreateNewSite");ManagementBaseObject[]serverBinding=newManagementBaseObject[1];serverBinding[0]=CreateServerBinding(HostName,IP,Port);inputParameters["ServerComment"]=serverComment;inputParameters["ServerBindings"]=serverBinding;inputParameters["PathOfRootVirtualDir"]=defaultVrootPath;inputParameters["ServerId"]=serverID;ManagementBaseObjectoutParameter=null;outParameter=oW3SVC.InvokeMethod("CreateNewSite",inputParameters,null);//啟動網(wǎng)站stringserverName="W3SVC/"+serverID;ManagementObjectwebSite=newManagementObject(_scope,newManagementPath(@"IIsWebServer='"+serverName+"'"),null);webSite.InvokeMethod("Start",null);return(string)outParameter.Properties["ReturnValue"].Value;}catch(Exceptionex){returnex.Message;}}publicManagementObjectCreateServerBinding(stringHostName,stringIP,stringPort){try{ManagementClassclassBinding=newManagementClass(_scope,newManagementPath("ServerBinding"),null);ManagementObjectserverBinding=classBinding.CreateInstance();serverBinding.Properties["Hostname"].Value=HostName;serverBinding.Properties["IP"].Value=IP;serverBinding.Properties["Port"].Value=Port;serverBinding.Put();returnserverBinding;}catch{returnnull;}}#endregion好了,準(zhǔn)備工作已經(jīng)做完,現(xiàn)在開始寫最重要的Install方法了整個方法寫完后如下:#regionInstall安裝//////安裝數(shù)據(jù)庫///IllpublicoverridevoidInstall(IDictionarystateSaver){base.Install(stateSaver);dir=this.Context.Parameters["dir”];DBName=this.Context.Parameters["DBNAME"].ToString();ServerName=this.Context.Parameters["server"].ToString();AdminName=this.Context.Parameters["user"].ToString();AdminPwd=this.Context.Parameters["pwd"].ToString();iis=this.Context.Parameters["iis"].ToString();;port=this.Context.Parameters["port"].ToString();〃寫入獲取的安裝程序中的變量,此段代碼為調(diào)試用可以不添加this.sqlConn.ConnectionString="Packetsize=4096;UserID="+AdminName+";DataSource="+ServerName+";Password="+AdminPwd+";PersistSecurityInfo=False;IntegratedSecurity=false";II執(zhí)行SQL安裝數(shù)據(jù)庫可選擇時(shí)恢復(fù)或者時(shí)直接創(chuàng)建if(!CreateDBAndTable(DBName)){thrownewApplicationException("創(chuàng)建數(shù)據(jù)庫時(shí)出現(xiàn)嚴(yán)重錯誤!”);}II從備份數(shù)據(jù)庫文件恢復(fù)數(shù)據(jù)庫I*if(!RestoreDB(DBName)){thrownewApplicationException("恢復(fù)數(shù)據(jù)庫時(shí)出現(xiàn)嚴(yán)重錯誤!");}*III添加網(wǎng)站Connect();IIstringserverID=GetNextOpenID().ToString();IIstringserverComment=websitenName;II下面的信息為測試,可以自己編寫文本框來接收用戶輸入信息stringserverID="5555";stringserverComment="cqfeng";stringdefaultVrootPath=this.Context.Parameters["targetdir"];if(defaultVrootPath.EndsWith(@"\")){defaultVrootPath=defaultVrootPath.Substring(0,defaultVrootPath.Length-1);}stringHostName="”;stringIP="”;stringPort=port;stringsReturn=CreateWebSite(serverID,serverComment,defaultVrootPath,HostName,IP,Port);//修改web.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論