下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
本文使用的InstallShiled的版本是InstallShiled2008 制作BaseMSIPreject及InstallScriptMSIPreject安裝包。菜 StandardDialogSamplerSkinnedDialogSampler查看固定的安裝查看InstallShield2008制作的CAB的內(nèi)容。安裝設(shè)計界面GeneralSetupLanguages:設(shè)置安裝包的語言種類,一般默認的是簡體AddorRemoveDisplayIconIndex:圖標文件的圖標索引;DisableRemoveButton:隱藏添加或刪除程序的列表中的刪除 PropertiesString特征,每Feature可包含F(xiàn)eature及若干Component,每擇安裝其包含的Component就會被安裝到系統(tǒng)中去;Setup定義),每種安裝類型包含若干個Feature。Setup [NewComponent]新建一個Component;[AssociateComponents]菜單可關(guān)聯(lián)Component。選擇VisibleandCollapsed;ComponentRegistry向表中添加鍵值A(chǔ)dvanced Paths:未知;Assembly:添加Assembly,沒有使用過;SetupinstalledinSetupType]欄,選擇此安裝類型需安裝的Feature。FilesandMobile向表中添加鍵值ODBCINIFile采用XML文件進行系統(tǒng)配置;XMLFile ComponentSQLBehaviorand編寫安裝程序的CustomActionsandSupportSystemUserPath制作安裝DependencyScan…]及[ImportVisualBasic6.0DirectInstallScript的事在InstallScriptMSIPreject項目中可以根據(jù)需要編寫控制安裝過程,下面介紹幾個重要的事件,事件分為三大類:BeforeMoveData(安裝數(shù)據(jù)前、MoveData(安裝數(shù)據(jù)過程中、AfterMoveData(安裝數(shù)據(jù)后。BeforeMoveOnfunctionOnNUMBERnResult,nSetupType,nvSize,STRINGszTitle,szMsg,szQuestion,svName, pany,szFile;STRINGszLicenseFile;LISTlist,listStartCopy;BOOLbCustom;//TODO:ifyouwanttoenablebackground,windowtitle,andcaptionbar//SetTitle(@PRODUCT_NAME,24,WHITE//SetTitle(@PRODUCT_NAME,0,BACKGROUNDCAPTION//Enable(FULLWINDOWMODE//Enable(BACKGROUND//SetColor(BACKGROUND,RGB(0,128,128));S_OBJECT_FOLDER=@PRODUCT_NAME;nSetupType=szTitle=""; =nResult= e(szTitle,szMsg);if(nResult=BACK)goto = pany=nResult=SdCustomerInformation(szTitle,svName, pany,nUser);if(nResult=BACK)goto szTitle=""; =nResult=SetupType(szTitle,szMsg,"",nSetupType,0);if(nResult=BACK)thengotonSetupType=if(nSetupType!=CUSTOM)thennvSize=0;pareSizeRequired(MEDIA,INSTALLDIR,nvSize);if(nvSize!=0)thengotoDlg_SetupType;bCustom=FALSE;gotoDlg_SQL;
bCustom=nResult=SdAskDestPath(szTitle,szMsg,INSTALLDIR,0);if(nResult=BACK)gotoDlg_SetupType; = =if(nSetupType=CUSTOM)nResult=SdFeatureTree(szTitle,szMsg,INSTALLDIR,"",2);if(nResult=BACK)gotoDlg_SdAskDestPath;nResult=OnSQLLogin(nResult);if(nResult=BACK)thenif(!bCustom)gotogotoszTitle=""; =listStartCopy=ListCreate(STRINGLIST//Thefollowingisanexampleofhowtoaddastring(svName)toa//eg.ListAddString(listStartCopy,svName,AFTER);nResult=SdStartCopy(szTitle,szMsg,listStartCopy);if(nResult=BACK)//setupdefaultstatus
return
從上面代碼可以看出在沒有安裝類型界面時沒有選擇自定義安裝在Dlgetye節(jié)中做一些改,使不論怎都szTitle=""; =nResult=SetupType(szTitle,szMsg,"",nSetupType,0);if(nResult=BACK)thengoto
nSetupType=if(nSetupType!=CUSTOM)thennvSize=0;pareSizeRequired(MEDIA,INSTALLDIR,nvSize);if(nvSize!=0)thengotoDlg_SetupType;bCustom=nResult=SdAskDestPath(szTitle,szMsg,INSTALLDIR,0);if(nResult=BACK)gotoDlg_SetupTypegoto
bCustom=NTService,在卸載時安裝程序不會將將此服務(wù)反安裝,這時就需要在這個事件中通過LaunchApp(APPLICATION,“‐uninstall”)手工刪除服務(wù)。AfterMoveOn在第一次安裝時,在安裝數(shù)據(jù)之后觸發(fā)的事件,例一個系FTP虛擬,如果在安裝數(shù)據(jù)之前就設(shè)置幾個技術(shù)問題介紹數(shù)據(jù)庫設(shè)置文件,一種是通過SQLScript創(chuàng)建數(shù)據(jù)庫,對于編寫SQLScript過于復(fù)雜,或創(chuàng)建數(shù)據(jù)庫時間過長時建議采用第法。將數(shù)據(jù)庫文件(a_data.mdf和a_log.ldf)SupportFiles中STRINGpsvSQLsvr,psvSQLusr,psvSQLpwd;BOOLbvWindowsLogin;prototypeSTRINGszWaitTxt,szdatabase,path,path3;szWaitTxt="正在創(chuàng)建數(shù)據(jù)庫. SdShowMsg(szWaitTxt,TRUE);szdatabase="/U"+svSQLusr+"/P"+svSQLpwd+"/S"+svSQLsvr+"/Q\"execsp_attach_dbN'a',if(LaunchAppAndWait("osql.exe",szdatabase,WAIT)<0)MessageBox("數(shù)據(jù)庫創(chuàng)建失??!請確您的系統(tǒng)中已安裝SQLServer2000.\n如仍SdShowMsg(szWaitTxt,FALSE);return-1;
不會彈出SQL登錄驗證界面,需要編寫代碼:PrototypenumberSQLLogin定義登錄函數(shù)functionSQLLogin()numbernResult,nSize;STRINGsMessage,SQLRTInitialize2nResult=SQLServerSelectLogin(psvSQLsvr,psvSQLusr,psvSQLpwd,bvWindowsLogin);if(nResult=BACK)returnBACK;MsiGetProperty(ISMSI_HANDLE,"IS_SQLSERVER_STATUS",sTemp,nSize);if(sTemp!="0")thennSize=MsiGetProperty(ISMSI_HANDLE,"IS_SQLSERVER_STATUS_ERROR",sMessage,nSize);if(nSize=0)thensMessage=SdLoadString(IDS_IFX_SQL_ERROR_LOGIN_FAILED);MessageBox(sMessage,MB_OK);gotoDlg_Sql;
在 nResult=if(nResult=BACK)gotoif!MAINTENANCE
SQL在InstallationDesigner中的SQLScripts創(chuàng)建數(shù)據(jù)庫的即息(在安裝過程中輸入的,如數(shù)據(jù)庫的安裝路徑,使用的公CREATEDATABASE[test]ON(NAME=N'test_Data',FILENAME=N'%INSTALL_DIR%DATA\test_Data.MDF',SIZE=4,FILEGROWTH=0)LOGON(NAME=N'test_Log',FILENAME=N'%INSTALL_DIR%DATA\test_Log.LDF',SIZE=4,FILEGROWTH=10%)INSERTINTO[dbo].[ pany]([company_name])VALUES(' 在InstallationDesigner中的PropertyManager添加一個
在 szMsg="請正確輸入用戶名稱及公司名稱,以便本系統(tǒng)顯示的信息正確!";nResultSdRegisterUser(szTitle,szMsgszUserInfo,panyName);MsiSetProperty(ISMSI_HANDLE,"PANYNAME",panyName);if(nResult=BACK)gotoInstallationDesignerSQLScriptsTextReplacementInstallScirpt調(diào)用動態(tài)運行庫中的函數(shù)安裝過程中有些設(shè)置是InstallShield無法做到的,需要其他的編程實現(xiàn),其他的編程可以編寫成可執(zhí)行的應(yīng)用程序(EXE文件,通過,InstallShield調(diào)用其中的函數(shù),我使用的是BorlandDelphi編程,我編寫了一個將安裝文件夾設(shè)置為FTP虛擬 的動態(tài)運行庫,在InstallShield中l(wèi)ibraryFtpSetup;SysUtils,Classes,COMOBJ,{$RprocedureFtpSet(siteName,appPath:PCHAR);stdcall;FTPSite,FTPServer,FTPRoot,FTPVDir:Variant;newSiteName,newAppPath:string;newSiteName:=siteName;newAppPath:=appPath;FTPSite:=FTPSite:=FTPSite.GetObject('IIsFtpService',FTPServer:=FTPSite.GetObject('IIsFtpServer','1');FTPRoot:=FTPServer.GetObject('IIsFtpVirtualDir',FTPVDir:=FTPRoot.Create('IIsFtpVirtualDir',newSiteName);FTPVDir.Path:=newAppPath;FTPVDir.AccessRead:=true;FTPVDir.AccessWrite:=true;
FTPSite:=Unassigned;FTPServer:=Unassigned;FTPRoot:=Unassigned;FTPVDir:=Unassigned;
InstallScript如下:prototypestdcallFtpSetup.FtpSetDLL_FILE=SUPPORTDIR^"FtpSetup.dll";nResult=UseDLL(DLL_FILE);if(nResult=0)thensvString1="drawingfile";svString2=DIR^"DrawingFilePath";psvString1=&svString1;psvString2=&svString2;UnUseDLL(DLL_FILE);自定義窗體BasicMSIProject創(chuàng)建自定義窗體,可參考標準窗體的各種設(shè)置,主要是窗體選擇NewDialgo菜單,進入自定義窗體向?qū)В籅lankDialogNewDialog1,如稱)MY_SERVER_IP、MY_SERVER_USERMY_SERVER_PWD,PasswordTrue,添加三個PushButton,分別是上一步、下一步及取消,如下圖所示:如果想將此窗體CustomerInformation窗體與SetupType之CustomerInformationBehaviorNext按鈕,如下圖所示,將Event的NewDialog的Argument更改為ServerLogin選擇ServerLogin的Behavior的Next按鈕,新增一個NewDialog同理在上一步按鈕中添加返回CustomerInformation窗體的事件,在取消按鈕中添加Event為Spaw log,Argument為CancelSetup,Condiiton為1,如下圖所示:BehaviorandLogicCustomActionsandSequences中XMLFileChangesInstallScriptMISProject創(chuàng)建自定義窗體需要注意在InstallScript中如何調(diào)用自定義窗體,并將窗體的屬性公共屬性,下面以一個例子說明調(diào)用;息記錄到XML文件中;UserInterfaceDialogsAllDialogsNewDialgoBlankDialog創(chuàng)建一個NewDialog1,如puterInfo,編輯窗體如DirectEditorDialogID,我創(chuàng)建的這個自定義窗體ID12011,在DirectEditorControl中查出各控件的ID;PropertyManager中新建四個屬性LOCALHOST、LOGINUSER、 #defineRES_DIALOG_ID //IDofcustomdialog#defineRES_PBUT_NEXT //IDofNextbutton#defineRES_PBUT_CANCEL //IDofCancelbutton#define #define #define #define #define
//IDofBack//IDofedit STRINGszDialogName,svName, NUMBERnResult,nCmdValue; puterIP,szFTPUser,szFTPPwd,szFTPPort;numbernSize;szDialogName= nResult=EzDefineDialog(szDialogName,"","",RES_DIALOG_ID);if(nResult<0)then//Reportanerror;thenMessageBox("Errorindefiningdialog",SEVERE);bDone=//Loopuntildone.//Displaythedialogandreturnthenextdialogevent.nCmdValue=WaitOnDialog(szDialogName);//Respondtotheevent.switch(nCmdValue)case//Theuserclickedthewindow'sClosebutton.Do(EXIT);caseMessageBox("Unabletodisplaydialog.Setupcanceled.",SEVERE);casehwndDlg=CmdGetHwndDlg(szDialogName);SdGeneralInit(szDialogName,hwndDlg,0,szSdProduct);SdSetDlgTitle(szDialogName,hwndDlg,szTitle);MsiGetProperty(ISMSI_HANDLE,"LOCALHOST", puterIP,nSize);MsiGetProperty(ISMSI_HANDLE,"LOGINUSER",szFTPUser,nSize);MsiGetProperty(ISMSI_HANDLE,"LOGINPWD",szFTPPwd,nSize);MsiGetProperty(ISMSI_HANDLE,"FTPPORT",szFTPPort,nSize);CtrlSetText(szDialogName,RES_EDITIP, CtrlSetText(szDialogName,RES_EDITUSER,szFTPUser);CtrlSetText(szDialogName,RES_EDITPWD,szFTPPwd);CtrlSetText(szDialogName,RES_EDITPORT,szFTPPort);Do(EXIT);bDone=TRUE;caseCtrlGetText(szDialogName,RES_EDITIP, CtrlGetText(szDialogName,RES_EDITUSER,szFTPUser);CtrlGetText(szDialogName,RES_EDITPWD,szFTPPwd);CtrlGetText(szDialogName,RES_EDITPORT,szFTPPort); MsiSetProperty(ISMSI_HANDLE,"LOGINUSER",szFTPUser);MsiSetProperty(ISMSI_HANDLE,"LOGINPWD",szFTPPwd);MsiSetProperty(ISMSI_HANDLE,"FTPPORT",szFTPPort);bDone=TRUE;untilbDone;//Closethedialog.EndDialog(szDialogName);//Removethedialogfrommemory.ReleaseDialog(szDialogName);//IfdialogisclosedwithNextbutton,displaynameandifnCmdValue=RES_PBUT_NEXTthenreturnNEXT;
在 szTitle設(shè)置服務(wù)器信nResult= if(nResult=BACK)gotoDlg_UserInfo;XMLFileChanges例 這個例子實現(xiàn)MSSQLSERVER數(shù)據(jù)庫、、系統(tǒng)服務(wù)、應(yīng)用Location中選擇存放路徑,并選CreateprojectfileinProjectName’subfolder(在工程文件夾中創(chuàng)建子文件夾),點擊OK;SourceControl(源代碼管理)AddtoSourceInstallationInformationGeneralInformationAddorPorductProperties項中更改INSTALLDIR(默認安裝路徑):OrganizationSetupDesign頁中添加四個Feature:WebSite(DisplayName:;Description:安裝并設(shè)置應(yīng)用程序網(wǎng)[INSTALLDIR]Service)、Client(DisplayName:客戶端;Description:安NTService組件, 在Files節(jié)點中添加服務(wù)程序MYSERVICE.EXE及配置文件Config.xml,并此文件設(shè)置為KeyFile,在InstallNTServices節(jié)點中添加一個服務(wù)MYSERVICE,更改屬性DisplayName:Client組件,更改屬性Destination:[INSTALLDIR]Client,在Files節(jié)點中添加服務(wù)程序MYCLIENT.EXE及配置文件Config.xml,在Shortcuts節(jié)點中,在Programs 中添加一個NewFolder,更改屬性DisplayName:程序,在此程序組中創(chuàng)建一個NewDirectory:[INSTALLDIR]ClientDesktopWebSiteDestination:[INSTALLDIR]WetSite,在含子文件夾)及Includeallfiles,選擇所在文件夾。OrganizationSetupDesign頁中的NTService項中關(guān)聯(lián)WebSite項中關(guān)聯(lián)Components的WebSite;BehaviorandLogicPropertyManagerSystemConfigurationXMLFileChangesXML文件,分別是系統(tǒng)服務(wù)和客戶端的配置文件Config.xml及配置文件添加系統(tǒng)服務(wù)的配置文件Config.xml,在General頁中的XMLFilebelongsto中選擇NTService,添加一個NewRoo ementcontent并填入http://[SERVERIP]/SMWebService/;Destination選擇[INSTALLDIR]Client,在SelectFeaturestheXMLfilebelongsto中選擇Client,添加一個NewRooement,并重命名為WebServiceAddress,在Advanced頁選擇Seementcontent并填入http://[SERVERIP]/SMWebService/;添加配置文件web.config,在General頁中的XMLFileDestination選擇[INSTALLDIR]WebSite,在SelectFeaturestheXMLfilebelongsto中選擇WebSite,添加一個NewRoo 重命名為configuration,添加一個NewElement,并重命名為connectionStrings,添加一個NewElement,并重命名為add[@connectionString=""and@name="DBConnectString"],在此添加屬性connectionString,Value為Timeout=300;ConnectionLifetime=3;在ServerConfiguration的InternetInformationServices中的WebSites添加一個,重命名為默認,在默認下添加一個虛 MySite,在General頁面中更改ASP.NETVersion為2.0.50727,在VirtualDirectory頁面中更改LocalPath為[INSTALLDIR]WebSite,Applicationpool(IIS6andlateronly)更改為DefaultAppPool;個NewScript,在General頁面中的SelectFeaturestheXMLfilebelongsto選擇Database,在Script頁面中編寫建庫,在TextReplacement建庫CREATEDATABASE[test]ON(NAME=N'test_Data',FILENAME=N'%INSTALL_DIR%DATA\test_Data.MDF',SIZE=4,FILEGROWTH=0)LOGON(NAME=N'test_Log',FILENAME=N'%INSTALL_DIR%DATA\test_Log.LDF',SIZE=4,FILEGROWTH=10%)CREATETABLE[dbo].[test][test_code][smallint]IDENTITY(1,1)NOTNULL,[test_name][char](40)NOTNULL,)ON INDEX[PKtest6FE99F9F]ON[dbo].[test]([test_code])ONUserInterfaceDialogs新建一個窗體ServerInfo,選擇是上一步、下一步及取消,選擇SQLLogin窗體的BehaviorNextEventNewDialogArgumentServerInfo窗體,ArgumentCustomSetup窗體,Condition1,同理在上一步按鈕中添加返回SQLLogin窗體的事件,在取消按鈕中添加BehaviorandLogicCustomActionsandSequences中可以看出CD‐ROMCompressallfiles(壓縮2.0版本,并選擇Copyfromsourcemedia,直至到完成界面。這個例子實現(xiàn)MSSQLSERVER數(shù)據(jù)庫、(3.5)、虛 中填入工程名稱:包測試,在Location中選擇存放路徑,并選CreateprojectfileinProjectName’subfolder(在工程文件夾中創(chuàng)建子文件夾),點擊OK;SourceControl(源代碼管理)AddtoSourceInstallationInformationGeneralInformationAddor)d:\MySiteOrganizationSetupDesign頁中添加三個Feature:WebSite(DisplayName:;Description:安裝并設(shè)置應(yīng)用程序網(wǎng)夾)及Includeallfiles,選擇所在文件夾;OrganizationSetupDesign頁中的WebSite項中關(guān)聯(lián)ComponentsWebSite;BehaviorandLogicPropertyManager 在SystemConfiguration的XMLFileChanges添加配置文件SelectFeaturestheXMLfilebelongstoWebSite,添加一個connectionStringsNewElement,并重命名為add[@connectionStringand@name="DBConnectString"],在此元素General頁面添加屬性name,ValueDBConnectString,添加屬性connectionString,Value為Server=[IS_SQLSERVER_SERVER];UserBase=TEST;MaxPoolSize=200;ConnectTimeout=300;ConnectionLifetime=3;;在configuration元素下再添加一個新元素appSettings,在此元素五個新元素,分別是:add[@key="CompanyName"and@value="]屬性:key:CompanyNamevalue:[ add[@key="FtpPassword"and@value=""](屬性:key:FtpPassword,[FTP_PWD]]key:FtpUserName,value:[FTP_USER]、add[@key="FtpPort"and[FTP_PORT]FtpHost"and@value=""](屬性:key:FtpHost,value:[FTP_IP];ServerConfigurationInternetInformationServicesWebSites添加一個,重命名為默認,在默認下添加一個虛擬MySite,在GeneralASPNETVersion2.0.50727,pool(IIS6andlateronly)更改為DefaultAppPool;個NewScript,在General頁面中的SelectFeaturestheXMLfilebelongsto選擇Database,在Script頁面中編寫建庫,在TextReplacement[INSTALLDIR]、PANY_NAME%替換為 建庫CREATEDATABASE[test]ON(NAME=N'test_Data',FILENAME=N'%INSTALL_DIR%DATA\test_Data.MDF',SIZE=4,FILEGROWTH=0)LOGON(NAME=N'test_Log',FILENAME=N'%INSTALL_DIR%DATA\test_Log.LDF',SIZE=4,FILEGROWTH=10%)(40)NOTNULL,)ON[PRIMARY]CREATEUNIQUECLUSTEREDINDEX[PKtest6FE99F9F]ON[dbo].[test]([test_code])ON[PRIMARY]INSERTINTO[dbo].[test]([test_name])VALUES 在UserInterface的Dialogs的AllDialogs點擊右鍵,選擇New窗體,重命名NewDialog1為 puterInfo,在DirectEditor的Dialog中查出該窗體的ID為12011,在DirectEditor的Control中查出各控件的ID; #define//IDofcustom#define1//IDofNext#define//IDofCancel#define//IDofBack#define//IDofedit#define#define#define STRINGszDialogName,svName, NUMBERnResult,nCmdValue; puterIP,szFTPUser,szFTPPwd,szFTPPort;numbernSize;szDialogName= nResult=EzDefineDialog(szDialogName,"","",RES_DIALOG_ID);if(nResult<0)then//Reportanerror;thenMessageBox("Errorindefiningdialog",SEVERE);bDone=//Loopuntildone.//Displaythedialogandreturnthenextdialogevent.nCmdValue=WaitOnDialog(szDialogName);//Respondtotheevent.switch(nCmdValue)case//Theuserclickedthewindow'sClosebutton.Do(EXIT);caseMessageBox("Unabletodisplaydialog.Setupcanceled.",SEVERE);casehwndDlg=CmdGetHwndDlg(szDialogName);SdGeneralInit(szDialogName,hwndDlg,0,szSdProduct);SdSetDlgTitle(szDialogName,hwndDlg,szTitle);MsiGetProperty(ISMSI_HANDLE,"FTP_ID", puterIP,nSize);MsiGetProperty(ISMSI_HANDLE,"FTP_USER",szFTPUser,nSize);MsiGetProperty(ISMSI_HANDLE,"FTP_PWD",szFTPPwd,nSize);MsiGetProperty(ISMSI_HANDLE,"FTP_PORT",szFTPPort,nSize);CtrlSetText(szDialogName,RES_EDITIP, CtrlSetText(szDialogName,RES_EDITUSER,szFTPUser);CtrlSetText(szDialogName,RES_EDITPWD,szFTPPwd);CtrlSetText(szDialogName,RES_EDITPORT,szFTPPort);Do(EXIT);bDone=TRUE;caseCtrlGetText(szDialogName,RES_EDITIP, CtrlGetText(szDialogName,RES_EDITUSER,szFTPUser);CtrlGetText(szDialogName,RES_EDITPWD,szFTPPwd);CtrlGetText(szDialogName,RES_EDITPORT,szFTPPort); MsiSetProperty(ISMSI_HANDLE,"FTP_USER",szFTPUser);MsiSetProperty(ISMSI_HANDLE,"FTP_PWD",szFTPPwd);MsiSetProperty(ISMSI_HANDLE,"FTP_PORT",szFTPPort);bDone=TRUE;untilbDone;//Closethedialog.EndDialog(szDialogName);//Removethedialogfrommemory.ReleaseDialog(szDialogName);//IfdialogisclosedwithNextbutton,displaynameandifnCmdValue=RES_PBUT_NEXTthenreturnNEXT;
libraryFtpSetup;SysUtils,Classes,COMOBJ,{$RprocedureFtpSet(siteName,appPath:PCHAR);stdcall;FTPSite,FTPServer,FTPRoot,FTPVDir:Variant;newSiteName,newAppPath:string;newSiteName:=siteName;newAppPath:=appPath;FTPSite:=FTPSite:=FTPSite.GetObject('IIsFtpService','localhost/MSFTPSVC');FTPServer:=FTPSite.GetObject('IIsFtpServer','1');FTPRoot:=FTPServer.GetObject('IIsFtpVirtualDir','Root');FTPVDir:=FTPRoot.Create('IIsFtpVirtualDir',newSiteName);FTPVDir.Path:=newAppPath;FTPVDir.AccessRead:=true;FTPVDir.AccessWrite:=true;FTPSite:=Unassigned;FTPServer:=Unassigned;FTPRoot:=Unassigned;FTPVDir:=Unassigned;BehaviorandLogicSupportFiles/BillboardsSupportprototypestdcallFtpSetup.FtpSet(POINTER,POINTER);prototypeCheckFTP();//檢測是否安裝了FTP//Includedheaderfiles#include"ifx.h"numberftpSelect;functionOnMoving()stringszAppPath;//SetLOGOComplianceApplication//TODO:ifyourapplication.exeisinasubfolderofDIRthenaddsubfolderszAppPath=DIR;RegDBSetItem(REGDB_APPPATH,//RegDBSetItem(REGDB_APPPATH_DEFAULT,szAppPath^//檢測是否安裝了functionNUMBERnvType,STRINGRegDBSetDefaultRoot(HKEY_LOCAL_MACHINEif(RegDBKeyExist("System\\CurrentControlSet\\Services\\MSFtpsvc")=1)thenreturn(1);return//On//TheOnUIAftereventcalledbytheframeworkafterthefile//ofthesetupwhenthesetupisrunningininstallmode.By//thiseventdisplaysUIthatinformsuserthatthesetuphas//completedfunctionOnSTRINGszTitle,szMsg1,szMsg2,szOption1,szOption2;NUMBERbOpt1,bOpt2;numberPOINTERpsvString1,psvString2;STRINGsvString1,svString2;stringDLL_FILE;bOpt1=FALSE;bOpt2=szMsg1=SdLoadString(IFX_SDFINISH_MSG1);if(ftpSelect!=0)thenDLL_FILE=SUPPORTDIR^"FtpSetup.dll";nResult=UseDLL(DLL_FILE);if(nResult=0)svString1=svString2=DIR^"DrawingFilePath";psvString1=&svString1;psvString2=&svString2;UnUseDLL
SdFinishEx(szTitle,szMsg1,szMsg2,szOption1,szO
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 解一元一次方程移項方法
- 一元一次方程的應(yīng)用5
- 工廠員工培訓(xùn)及管理方案
- 《機械制造工藝》課件-工藝方案的比較與技術(shù)經(jīng)濟性指標
- 抹灰施工中進場材料檢驗方案
- 施工現(xiàn)場安全教育方案
- 管網(wǎng)改造項目財務(wù)管理方案
- 施工人員培訓(xùn)與考核方案
- 施工階段溝通協(xié)調(diào)方案
- 給水工程項目管理體系
- 2025成人腸造口護理指南課件
- 山東省臨沂市蘭山區(qū)2024-2025學(xué)年七年級上學(xué)期期末考試生物試卷(含答案)
- 滅菌包裝袋內(nèi)部資料課件
- 義務(wù)消防員培訓(xùn)課件的課件
- 市政施工圍擋施工圍擋方案
- 城鎮(zhèn)道路工程施工與質(zhì)量驗收規(guī)范cjj
- YY0778-2018《射頻消融導(dǎo)管》標準變化解讀
- GB/T 8350-2003輸送鏈、附件和鏈輪
- GB/T 18318.1-2009紡織品彎曲性能的測定第1部分:斜面法
- GB/T 17477-2012汽車齒輪潤滑劑黏度分類
- 煙花爆竹經(jīng)營單位安全管理人員培訓(xùn)教材課件
評論
0/150
提交評論