Installshield的InstallScript项目 1.在Dialogs视图中,右键All Dialog,选择新建对话框(New Dialog) 2.创建一个空白对话框,命名为MyDlg. 3.双击MyDlg下的子项即可进入对话框的编辑模式 4.这里我们添加一个Hello按钮。选择按钮控件然后在对话框的界面上拖拉出一个按钮控件。 修改按钮属性text为Hello。注意一下这里的Control Identifer属性值,后面我们会用到。 5.在installscript视图中新建一个rul文件,命名为MyDlg.url 6.编写MyDlg.url 内容如下: #define DLG_MYDLG "MyDlg" //MyDlg是我们的对话框名字 #define HELLOBTN 1301 //1301就是我们那个按钮的Control Identifer属性值 prototype NUMBER MyDlg(BYREF STRING); function NUMBER MyDlg(msg) HWND hDlg; NUMBER nId,nResult; NUMBER nControl; BOOL bDone; begin //初始对话框函数 if (EzDefineDialog( DLG_MYDLG,ISUSER,"MyDlg",0 ) = DLG_ERR) then return ISERR_GEN_FAILURE; endif; bDone = FALSE; //循环 while (!bDone) nId = WaitOnDialog( DLG_MYDLG ); //获得对话框的消息 switch (nId) case HELLOBTN: //如果是HELLOBTN MessageBox(msg,WARNING); bDone=TRUE; case DLG_ERR: nId = ISERR_GEN_FAILURE; SdError(nId,DLG_MYDLG); bDone = TRUE; case DLG_CLOSE: SdCloseDlg(hDlg,nId,bDone); default: // check standard handling if (SdisStdButton(nId) && SdDoStdButton(nId)) then bDone = TRUE; endif; endswitch; endwhile; end; 7.setup.url内容: //添加的内容是 #include "MyDlg.rul" //以及我们自定义的对话框。其他的代码都是自动生成的。 // First Install UI Sequence - Before Move Data // // The OnFirstUIBefore event is called by OnShowUI when the setup is // running in first install mode. By default this event displays UI allowing // the end user to specify installation parameters. // // Note: This event will not be called automatically in a // program...endprogram style setup. //--------------------------------------------------------------------------- #include "MyDlg.rul" function OnFirstUIBefore() number nResult,nLevel,nSize,nSetupType; string szTitle,szMsg,szOpt1,szOpt2,szLicenseFile; string szName,szCompany,szTargetPath,szDir,szFeatures; BOOL bLicenseAccepted; begin nSetupType = COMPLETE; szDir = TARGETDIR; szName = ""; szCompany = ""; bLicenseAccepted = FALSE; // Beginning of UI Sequence Dlg_Start: nResult = 0; Dlg_SdWelcome: szTitle = ""; szMsg = ""; //{{IS_SCRIPT_TAG(Dlg_SdWelcome) nResult = SdWelcome( szTitle,szMsg ); //}}IS_SCRIPT_TAG(Dlg_SdWelcome) if (nResult = BACK) goto Dlg_Start; Dlg_Hello: ////我们自定义的对话框 szTitle=""; szMsg="It's my hello DLG"; nResult=MyDlg(szMsg); if (nResult=BACK) goto Dlg_Start; Dlg_SdLicense2: szTitle = ""; szOpt1 = ""; szOpt2 = ""; //{{IS_SCRIPT_TAG(License_File_Path) szLicenseFile = SUPPORTDIR ^ "License.rtf"; //}}IS_SCRIPT_TAG(License_File_Path) //{{IS_SCRIPT_TAG(Dlg_SdLicense2) nResult = SdLicense2Rtf( szTitle,szLicenseFile,bLicenseAccepted ); //}}IS_SCRIPT_TAG(Dlg_SdLicense2) if (nResult = BACK) then goto Dlg_SdWelcome; else bLicenseAccepted = TRUE; endif; Dlg_SdRegisterUser: szMsg = ""; szTitle = ""; //{{IS_SCRIPT_TAG(Dlg_SdRegisterUser) // nResult = SdRegisterUser( szTitle,szName,szCompany ); //}}IS_SCRIPT_TAG(Dlg_SdRegisterUser) if (nResult = BACK) goto Dlg_MyDlg; Dlg_SetupType2: szTitle = ""; szMsg = ""; nResult = CUSTOM; //{{IS_SCRIPT_TAG(Dlg_SetupType2) // nResult = SetupType2( szTitle,"",nSetupType,0 ); //}}IS_SCRIPT_TAG(Dlg_SetupType2) if (nResult = BACK) then goto Dlg_SdRegisterUser; else nSetupType = nResult; if (nSetupType != CUSTOM) then szTargetPath = TARGETDIR; nSize = 0; FeatureCompareSizerequired( MEDIA,nSize ); if (nSize != 0) then MessageBox( szSdStr_NotEnoughSpace,WARNING ); goto Dlg_SetupType2; endif; endif; endif; Dlg_SdaskDestPath2: if ((nResult = BACK) && (nSetupType != CUSTOM)) goto Dlg_SetupType2; szTitle = ""; szMsg = ""; if (nSetupType = CUSTOM) then //{{IS_SCRIPT_TAG(Dlg_SdaskDestPath2) nResult = SdaskDestPath2( szTitle,szDir ); //}}IS_SCRIPT_TAG(Dlg_SdaskDestPath2) TARGETDIR = szDir; endif; if (nResult = BACK) goto Dlg_SetupType2; Dlg_SdFeatureTree: if ((nResult = BACK) && (nSetupType != CUSTOM)) goto Dlg_SdaskDestPath2; szTitle = ""; szMsg = ""; szFeatures = ""; nLevel = 2; if (nSetupType = CUSTOM) then //{{IS_SCRIPT_TAG(Dlg_SdFeatureTree) // nResult = SdFeatureTree( szTitle,TARGETDIR,szFeatures,nLevel ); //}}IS_SCRIPT_TAG(Dlg_SdFeatureTree) if (nResult = BACK) goto Dlg_SdaskDestPath2; endif; Dlg_sqlServer: nResult = OnsqlServerInitialize( nResult ); if( nResult = BACK ) goto Dlg_SdFeatureTree; Dlg_Objdialogs: nResult = ShowObjWizardPages( nResult ); if (nResult = BACK) goto Dlg_sqlServer; Dlg_SdStartcopy2: szTitle = ""; szMsg = ""; //{{IS_SCRIPT_TAG(Dlg_SdStartcopy2) nResult = SdStartcopy2( szTitle,szMsg ); //}}IS_SCRIPT_TAG(Dlg_SdStartcopy2) if (nResult = BACK) goto Dlg_Objdialogs; // Added in 11.0 - Set appropriate StatusEx static text. SetStatusExStaticText( SdLoadString( IDS_IFX_STATUSEX_STATICTEXT_FirsTUI ) ); return 0; end; 编译运行就可以看到自己的对方框了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。