加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

InsallShield 脚本模板代码

发布时间:2020-12-12 14:48:44 所属栏目:MsSql教程 来源:网络整理
导读:转自http://blog.csdn.net/gaofang2009/article/details/5258446 作者有不少安装包学习心得。值得参考 代码如下:有用的地方要用,但是,要根据实际情况,哦。 至少有些方法可以直接裁出来用的。 有些是我自己编写的,有些是从网上搜来的方法。做一个IS的打

转自http://blog.csdn.net/gaofang2009/article/details/5258446

作者有不少安装包学习心得。值得参考


代码如下:有用的地方要用,但是,要根据实际情况,哦。

至少有些方法可以直接裁出来用的。

有些是我自己编写的,有些是从网上搜来的方法。做一个IS的打包程序还真是不容易呢。

Setup.Rul

view plain print ?
  1. //===========================================================================??
  2. //??
  3. //??File?Name:????Setup.rul??
  4. //??Description:??Blank?setup?main?script?file??
  5. //??Comments:?????Blank?setup?is?an?empty?setup?project.?If?you?want?to??
  6. //????????????????create?a?new?project?via.?step-by?step?instructions?use?the??
  7. //????????????????Project?Assistant.??
  8. //描述:空白设置主脚本文件??
  9. //?评论:空白的设置是一个空的安装项目。如果你想通过创建一个新的项目。分步说明使用项目助理??
  10. ??
  11. //?Included?header?files?----------------------------------------------------??
  12. #include?"ifx.h"??
  13. ???BOOL?bWinLogin;?????
  14. ???string?szServer,?szUser,?szPassword;???
  15. ???//---------------------------------------------------------------???
  16. prototype??WriteDBInfo(STRING);??
  17. function??WriteDBInfo(dbConnection)???????
  18. ????string?svResult;?????
  19. ????number?nvFileHandle;??
  20. begin??
  21. ??
  22. ?//写获取连接数据库文件??
  23. ????OpenFileMode(FILE_MODE_APPEND);???
  24. if?(FindFile(ProgramFilesFolder+"//"+@COMPANY_NAME+"//示例数据库","DBConnection.txt",?svResult)?<?0)?then?//没有,需要create一个???
  25. ????????CreateFile(nvFileHandle,ProgramFilesFolder+"//"+@COMPANY_NAME+"//示例数据库","DBConnection.txt");???
  26. else???
  27. ????????OpenFile?(nvFileHandle?,"DBConnection.txt");?????
  28. ????endif;???
  29. ????WriteLine(?nvFileHandle,dbConnection);???
  30. ????CloseFile(nvFileHandle);???
  31. end?;??
  32. /////////////////////////////////////////////////////////////////////////////////////////////////??
  33. prototype?DetachDB();??
  34. function?number?DetachDB()???
  35. ????STRING?szCmdLine,szWaitTxt;???
  36. string?svResult,svLine;?????
  37. begin???????
  38. ????szWaitTxt="?正在分离安装网站使用的数据库……";???
  39. ????SdShowMsg?(szWaitTxt,?TRUE);???
  40. ????Delay(2);??????
  41. ????//szCmdLine?=?"/E??/S?"+svSQLsvr+"?/Q?/"EXEC??sp_detach_db??@dbname??=??N'YCSCMDB'";???
  42. ????//读取连接字符串????
  43. ???? ???????MessageBox?("数据库配置文件丢失,请手动分离或删除网站使用的数据库!",SEVERE);???
  44. else??
  45. ????????OpenFile?(?nvFileHandle?,"DBConnection.txt");??????
  46. ????????ab:??
  47. ????????if(GetLine(?nvFileHandle,svLine)<0)?then???
  48. ????????????CloseFile(nvFileHandle);??
  49. ?????????else??
  50. ????????????????szCmdLine?=svLine+"?/Q?/"EXEC??sp_detach_db??@dbname??=??N'YCSCMDB'/"";???
  51. ????????????????//szCmdLine?=?"/U?"+svSQLusr+"?/P?"+svSQLpwd+"?/S?"+svSQLsvr+"?/Q?/"EXEC??sp_attach_db??@dbname??=??N'dlbj',@filename1??=?N'"+TARGETDIR?^"dlbj_web.MDF',@filename2??=?N'"+TARGETDIR?^"dlbmydb_log.LDF'/"";???
  52. ????????????????LaunchAppAndWait("osql.exe",?szCmdLine,WAIT);??
  53. ????????????????if(LaunchAppAndWait("osql.exe",WAIT)<0)??then??
  54. ??????????????????????MessageBox?("数据库分离失败!请手动分离或删除网站使用的数据库!",SEVERE);????
  55. ??????????????????? ???????????????????????goto?ab;??
  56. ????????????????endif;???
  57. ????????endif;??
  58. ????????SdShowMsg?(szWaitTxt,?FALSE);?????????
  59. ????endif;???
  60. //szWaitTxt="?正在优化系统数据库……";???
  61. //SdShowMsg?(szWaitTxt,?TRUE);???
  62. //Delay(2);???
  63. //szCmdLine?=?"/U?"+svSQLusr+"?/P?"+svSQLpwd+"?/S?"+svSQLsvr+"?/Q?/"use?dlbj?;?exec?sp_updatestats/"";???
  64. //??if?(LaunchAppAndWait("osql.exe",WAIT)?<?0)?then???
  65. //??MessageBox?("数据库优化失败!您可以在?sql查询分析器中执行?use?dlbj?;?exec?sp_updatestats?完成!",SEVERE);???
  66. //??endif;???
  67. //??SdShowMsg?(szWaitTxt,?FALSE);????
  68. ??????
  69. return?0;???
  70. end;???
  71. //---------------------------------------------------------------------------??
  72. ?????
  73. //?Note:?In?order?to?have?your?InstallScript?function?executed?as?a?custom??
  74. //?action?by?the?Windows?Installer,?it?must?be?prototyped?as?an???
  75. //?entry-point?function.??
  76. //?The?keyword?export?identifies?MyFunction()?as?an?entry-point?function.??
  77. //?The?argument?it?accepts?must?be?a?handle?to?the?Installer?database.??
  78. /*?export?prototype?MyFunction(HWND);?*/??
  79. //注意:为了让您的InstallScript中作为一个自定义的执行???
  80. //由Windows?Installer的行动,它必须作为一个原型?入口点函数。???
  81. //关键字出口标识调用MyFunction()作为入口点函数。???
  82. //它接受的参数必须是一个句柄安装程序数据库。???
  83. ???????
  84. //*出口原型调用MyFunction(HWND);?*?/??
  85. ??????//-----------------------------------------------------------------------??
  86. prototype?CheckIIS();?//检测是否安装了iis??????
  87. //--------------------------------------------------------????
  88. //检测是否安装了IIS??
  89. function?CheckIIS()???
  90. ????NUMBER?nvType,?nvSize;???
  91. ????STRING?svvalue;???
  92. ????begin???
  93. ????????RegDBSetDefaultRoot?(?HKEY_LOCAL_MACHINE?);???
  94. if?(RegDBKeyExist?("System//CurrentControlSet//Services//IISADMIN"?)?=?1)?then???
  95. ????????????????return?(1);???
  96. ????????????return?(0);???
  97. ????????endif;??
  98. ????end;???
  99. //-----------------------------------------------------------???
  100. ???????
  101. //---------------------------------------------------------------------------??
  102. //?OnFirstUIBefore??
  103. //?The?OnFirstUIBefore?event?is?called?by?the?framework?when?the?setup?is??
  104. //?running?in?first?install?mode.?By?default?this?event?displays?UI?allowing??
  105. //?the?end?user?to?specify?installation?parameters.??
  106. //该事件被称为OnFirstUIBefore由框架时,安装程序??
  107. //运行在第一次安装模式。允许默认情况下此事件显示界面??
  108. //最终用户指定安装参数。??
  109. function?OnFirstUIBefore()??
  110. ????NUMBER?nResult,?nSetupType,?nvSize,?nUser;??
  111. ????STRING?szTitle,?szMsg,?szQuestion,?svName,?svCompany,?szFile;??
  112. ????STRING?szLicenseFile;????
  113. ??????
  114. ????LIST?list,?listStartCopy;??
  115. ????BOOL?bCustom;?????
  116. ????STRING?szBmpPath,?szAppPath,svResult,svLine,svSubStr,szIp;//自定义???????
  117. ????number?nvFileHandle,nvIp;??????
  118. string?szOpt1,?szOpt2;??????
  119. ????BOOL?bLicenseAccepted;??
  120. begin?????
  121. //?TO?DO:?if?you?want?to?enable?background,?window?title,?and?caption?bar?title?????????????????????????????????????????????????????????????????????
  122. //?SetTitle(?@PRODUCT_NAME,?24,?WHITE?);??????????????????????????????????????????
  123. ??
  124. //?Enable(?FULLWINDOWMODE?);?????????????????????????????
  125. //?Enable(?BACKGROUND?);????????????????????????????????
  126. //?SetColor(BACKGROUND,RGB?(0,?128,?128));???????????????????????
  127. ????SHELL_OBJECT_FOLDER?=?@PRODUCT_NAME;?????????
  128. ????nSetupType?=?TYPICAL;?????
  129. //-----------------------------------------------------------------------??
  130. //设置背景图片???
  131. ??????SetTitle("欢迎您使用银河卡电子产品",???24,???WHITE);?????????????????????????????????????????????????????????????????????????????????????
  132. ??????????SetTitle(?"安装“网上阅卷系统”",BACKGROUNDCAPTION);?????????????????????????????????????????????
  133. ??????????Enable(FULLWINDOWMODE);???????????
  134. ??????????Enable(BACKGROUND?);?????????
  135. ?????????//?PlaceBitmap???(SUPPORTDIR^"BackGround.bmp",UPPER_LEFT);??//左上角显示图片??
  136. ???????????
  137. //PlaceWindow?(?BILLBOARD?,?200?,?40?,?UPPER_LEFT?);?//平铺logo???
  138. //SetDisplayEffect(EFF_FADE);//设置显示效果?????
  139. //?PlaceWindow???(???BILLBOARD???,???200???,???40???,???UPPER_LEFT???);????
  140. //PlaceWindow(BACKGROUND,10,UPPER_LEFT);?//背景窗口的位置为左上方开始10,10????
  141. ??????????SetColor(BACKGROUND,RGB???(0,???128,???128));???
  142. //----------------------------------------------------------------?????
  143. //----------------------------------------------------------------?????
  144. szBmpPath=SUPPORTDIR+"//left.bmp;1;0,0";??//图片有白色的背景,所以设置白色为透明色??“位图文件名;透明标志;<未用>;<未用>;透明色”标准位图为57×53??
  145. //SizeWindow?(METAFILE,50,?50);?????
  146. DialogSetInfo?(DLG_INFO_ALTIMAGE,?szBmpPath,TRUE);?//?设置左边的logo图片???
  147. //------------------------------------------------------------------?????
  148. //------------------------------------------------------------------?????
  149. SdShowMsg(?"安装程序正在检测系统必备组件......?",TRUE);???
  150. Delay(2);???????
  151. SdShowMsg???("",FALSE);??????
  152. //---------------------------------------------------------------------??
  153. ?WriteIp:??
  154. //写获取ip地址文件??
  155. if?(FindFile(SUPPORTDIR,"ipconfig.bat",?svResult)?<?0)?then?//没有,需要create一个???
  156. "ipconfig.bat");???
  157. ????????OpenFile?(?nvFileHandle?,"ipconfig.bat");?????
  158. ????????//LaunchAppAndWait("","net?stop?w3svc"+"/S",WAIT);??
  159. ????WriteLine(?nvFileHandle,"ipconfig?/all?>>?/""+SUPPORTDIR+"/ipconfig.txt/"");???
  160. ????CloseFile(nvFileHandle);????
  161. ??????LaunchAppAndWait("",SUPPORTDIR^"ipconfig.bat",WAIT);????
  162. ?//----------------------------------------------------------------------------------??
  163. //读取ip地址??
  164. if?(FindFile(?SUPPORTDIR,"ipconfig.txt",0); background-color:inherit">//没有,需要create一个???
  165. ???????goto?WriteIp;??
  166. else???
  167. "ipconfig.txt");?????
  168. ????endif;????
  169. ????ab:??
  170. ????????CloseFile(nvFileHandle);??
  171. ????????else????
  172. ????????nvIp=StrFind(svLine,"Ethernet?adapter?本地连接:");??
  173. if(nvIp>-1)then????
  174. ????????????????????cd:??
  175. ???????????????????? ????????????????????????CloseFile(nvFileHandle);??
  176. ????????????????????????nvIp=StrFind?(svLine,"IP?Address");??
  177. ????????????????????????? ???????????????????????????StrSub?(svSubStr,?svLine,nvIp+StrLength("IP?Address.?.?.?.?.?.?.?.?.?.?.?.?:?"),?StrLength?(svLine)-nvIp+StrLength("IP?Address.?.?.?.?.?.?.?.?.?.?.?.?:?"));???
  178. ???????????????????????????szIp=svSubStr;??
  179. ???????????????????????? ?????????????????????????????goto?cd;???
  180. ?????????????????????????endif;???
  181. ????????????????????endif;????
  182. ?????????????goto?ab;???
  183. ?????????endif;????
  184. ????endif;??
  185. //--------------------------------------------------------------------------------------??
  186. SetIIS:??
  187. //安装iis????
  188. //szProgram?=?"rundll32.exe";???
  189. //szCmdLine?=?"setupapi.dll,InstallHinfSection?Modem1?132?"?+?WINDIR?+?"driver139//oxser.inf";??
  190. if?CheckIIS()???then???????
  191. goto?SetDotNet;??
  192. else??????
  193. ????SprintfBox(MB_OK,"IIS安装","您还未安装IIS,请安装!");??????
  194. if(LaunchAppAndWait("rundll32.exe",?"shell32.dll,Control_RunDLL?appwiz.cpl,2",?WAIT)<0)then??
  195. ????????SprintfBox(MB_OK,"IIS安装时发生意外,请重新安装!");????
  196. goto?SetIIS;??
  197. endif;??
  198. ?SetDotNet:??
  199. //判断是否安装了.netframework??
  200. RegDBSetDefaultRoot?(?HKEY_LOCAL_MACHINE?);??
  201. if?(?RegDBKeyExist?("SOFTWARE//Microsoft//.NETFramework//policy//v2.0"?)?<?0)?then??
  202. SprintfBox(MB_OK,".NET安装","尚未安装.net?framework?2.0?!/n请点击“确定”以继续安装!");??????????
  203. if(?LaunchAppAndWait(?SUPPORTDIR?^?"dotnetfx.exe"?,?"/q:a/l"?,WAIT)?<?0)?then???
  204. ??????????SprintfBox(MB_OK,"安装.net框架时发生意外,请重新安装!");??
  205. ".NET?FrameWork?2.0已安装!");??
  206. endif;??????????????
  207. //----------------------------------------------------------------------???
  208. SetSqlServer:??
  209. //判断是否安装了SQL?Server????????
  210. if?(?RegDBSetKeyValueEx?("SOFTWARE//Microsoft//Microsoft?SQL?Server//80//MSSQLLicenseInfo//MSSQL8.00//DisplayName","DisplayName",REGDB_STRING,"SQL?Server?2000",-1?)?<?0)?then??
  211. "SQL?Server?2000?安装","尚未安装SQL?Server?2000?!/n请点击“确定”以继续安装!");??????????
  212. if(?LaunchAppAndWait(?SUPPORTDIR?^?"SQL?2000?Enterprise//AUTORUN.EXE.exe"?,"安装SQL?Server?2000?时发生意外,248); line-height:24px"> ?????SprintfBox(MB_OK,"SQL?Server?2000?已安装!");??
  213. ?????endif;??
  214. endif;?????
  215. ??//------------------------------------------------------------------???????
  216. Dlg_SdWelcome:????//欢迎?对话框??????
  217. ????szTitle?=?"欢迎使用YHK_GF安装软件";??
  218. ????szMsg?=?"YHK_GF安装软件将在您的计算机中安装/b/n/b/n“网上阅卷系统”,/b/n/b/n若要继续,请单击“下一步”。";???
  219. ????nResult?=?SdWelcome(szTitle,?szMsg);??
  220. if?(nResult?=?BACK)?goto?Dlg_SdWelcome;??
  221. Dlg_SdLicense2:?//软件许可协议??
  222. ????szTitle?="欢迎您/b/n请仔细阅读用户协议,本协议具有法律效力!!";??
  223. ????szOpt1?=?"同意(&A)";??
  224. ????szOpt2?=?"不同意(&D)";??
  225. //{{IS_SCRIPT_TAG(License_File_Path)??
  226. ????szLicenseFile?=?SUPPORTDIR?^?"用户使用协议.rtf";??
  227. //}}IS_SCRIPT_TAG(License_File_Path)??
  228. //{{IS_SCRIPT_TAG(Dlg_SdLicense2)??
  229. ????nResult?=?SdLicense2Rtf(?szTitle,?szOpt1,?szOpt2,?szLicenseFile,?bLicenseAccepted?);??
  230. //}}IS_SCRIPT_TAG(Dlg_SdLicense2)??
  231. if?(nResult?=?BACK)?then??
  232. goto?Dlg_SdWelcome;??
  233. ????????bLicenseAccepted?=?TRUE;??
  234. Dlg_SdCustomerInformation:??
  235. //用户信息对话框??
  236. ????szMsg?=?"请您填写用户信息卡";??
  237. ????szTitle?=?"欢迎您/b/n使用YHK安装系统";??????
  238. ????svName????=?"";??
  239. ????svCompany?=?"";??
  240. ????nResult?=?SdCustomerInformation(szTitle,?nUser);??
  241. ???
  242. ???
  243. Dlg_SetupType:?//安装类型对话框??
  244. ????szTitle?=?"安装类型/b/n请选择安装类型";??
  245. ????szMsg?=?"请选择安装";??
  246. ????nResult?=?SetupType(szTitle,?"",?0);??
  247. if?(nResult?=?BACK)?then??
  248. goto?Dlg_SdCustomerInformation;??
  249. ????????nSetupType?=?nResult;??
  250. if?(nSetupType?!=?CUSTOM)?then??
  251. ????????????nvSize?=?0;??
  252. ????????????FeatureCompareSizeRequired(MEDIA,?INSTALLDIR,?nvSize);??
  253. ????????????if?(nvSize?!=?0)?then????????
  254. ????????????????MessageBox(szSdStr_NotEnoughSpace,?WARNING);??
  255. goto?Dlg_SetupType;??
  256. ????????????endif;??
  257. ????????????bCustom?=?FALSE;??
  258. goto?Dlg_SQL;??
  259. ????????????bCustom?=?TRUE;??
  260. ????endif;??????
  261. Dlg_SdAskDestPath:?????
  262. ????szTitle="";??
  263. ????szMsg="";?????
  264. ????nResult?=?SdAskDestPath(szTitle,?0);??
  265. goto?Dlg_SetupType;??
  266. Dlg_SdFeatureTree:???
  267. ????szTitle????=?"";??
  268. ????szMsg??????=?"";??
  269. if?(nSetupType?=?CUSTOM)?then??
  270. ????????nResult?=?SdFeatureTree(szTitle,?2);??
  271. goto?Dlg_SdAskDestPath;????
  272. ????endif;??
  273. Dlg_SQL:??
  274. ????nResult?=?OnSQLLogin(?nResult?);??
  275. if(?nResult?=?BACK?)?then??
  276. if?(!bCustom)?then??
  277. goto?Dlg_SetupType;??????
  278. goto?Dlg_SdFeatureTree;??
  279. Dlg_SdStartCopy:???//准备就绪对话框????
  280. ????szTitle?=?"可以安装“网上阅卷系统”了/b/n安装准备工作已就绪,可以开始安装了。";??
  281. ????szMsg?="";//?"单击“安装”以开始安装。/b/n如果要检查或更改任何安装设置,请单击“上一步”。单击“取消”退出安装向导。";??
  282. ????listStartCopy?=?ListCreate(?STRINGLIST?);??
  283. //The?following?is?an?example?of?how?to?add?a?string(svName)?to?a?list(listStartCopy).??
  284. //eg.?ListAddString(listStartCopy,svName,AFTER);????
  285. ????ListAddString(listStartCopy,"你的选择如下:",AFTER);??
  286. ????ListAddString(listStartCopy,"",AFTER);???
  287. "安装路径:"+TARGETDIR,"程序组名:"+SHELL_OBJECT_FOLDER,248); line-height:24px"> ????????ListAddString(listStartCopy,"安装类型:"+"自定义",108); color:inherit; line-height:24px"> ????elseif?(nSetupType?=?TYPICAL)?then??
  288. "安装类型:"+"典型",108); color:inherit; line-height:24px"> ????elseif?(nSetupType?=?COMPACT)?then??
  289. "安装类型:"+"压缩",248); line-height:24px"> ????nResult?=?SdStartCopy(?szTitle,?listStartCopy?);???????????
  290. ????ListDestroy(listStartCopy);??
  291. goto?Dlg_SQL;??
  292. //---------------------------------------------------------------------------------??
  293. ?????//?在桌面上添加快捷方式???
  294. ????AddFolderIcon(FOLDER_DESKTOP,"网上阅卷系统首页","/"http://"+szIp+":8080/Default.aspx/"",TARGETDIR,TARGETDIR+"//TempIco//021.ico","",REPLACE);?????
  295. //添加程序快捷方式??
  296. ????AddFolderIcon(FOLDER_PROGRAMS^"网上阅卷系统GF安装","网上阅卷系统首页",0); background-color:inherit">//添加卸载快捷方式??
  297. "卸载","/""+PROGRAMFILES+"/InstallShield?Installation?Information//{E71A5501-0CCF-4765-A743-8F1352781170}//Setup.exe?/"",TARGETDIR+"//TempIco//011.ico",0); background-color:inherit">//?<PROGRAMFILES>/InstallShield???Installation???Information/{96C6BC6D-1EAA-43C2-9A2C-CB1242590FD7}/Setup.exe?????
  298. //?其中?????
  299. //?{611b4a59-fae0-443b-acbb-8cb1ce57fada}?????
  300. //?这个值是这样取得的?????
  301. //?Project-》Setting-》General-》Project对应的那项?????
  302. //---------------------------------------------------------------------------------------------------------------???????
  303. //?setup?default?status??
  304. ????Enable(STATUSEX);??
  305. return?0;??
  306. end;??
  307. //?OnMaintUIAfter??
  308. //??
  309. //?The?OnMaintUIAfter?event?called?by?the?framework?after?the?file?transfer??
  310. //?of?the?setup?when?the?setup?is?running?in?maintenance?mode.?By?default??
  311. //?this?event?displays?UI?that?informs?the?end?user?that?the?maintenance?setup??
  312. //?has?been?completed?successfully.??
  313. //事件的OnMaintUIAfter所呼吁的框架后,文件传输在安装时,安装程序在维护模式下运行。??
  314. //默认情况下?这一事件显示界面,通知最终用户,维修安装?已成功完成。...??
  315. function?OnMaintUIAfter()??
  316. ????NUMBER?bOpt1,?bOpt2;??
  317. ????Disable(STATUSEX);??
  318. ????bOpt1???=?FALSE;??
  319. ????bOpt2???=?FALSE;??
  320. //?Added?-?Version?9.5?-?Use?appropriate?strings?for?complete??
  321. //?uninstall.??
  322. if(?REMOVEALLMODE?)?then??
  323. ????????szTitle?=?SdLoadString(IFX_SDFINISH_REMOVE_TITLE);??
  324. ????????szMsg1?=?SdLoadString(IFX_SDFINISH_REMOVE_MSG1);???
  325. //卸载完成??
  326. ????????szTitle="卸载完毕";??
  327. ????????szMsg1="已完全卸载“网上阅卷系统”";???
  328. ????????szTitle?=?SdLoadString(IFX_SDFINISH_MAINT_TITLE);??????
  329. ????????szMsg1??=?SdLoadString(IFX_SDFINISH_MAINT_MSG1);??
  330. ?????????szMsg2?="谢谢您使用保定银河卡电子公司的产品。";??
  331. ????SdFinishEx(szTitle,?szOption2,?bOpt1,?bOpt2);??
  332. end;??
  333. //?OnFirstUIAfter??
  334. //?The?OnFirstUIAfter?event?called?by?the?framework?after?the?file?transfer??
  335. //?of?the?setup?when?the?setup?is?running?in?first?install?mode.?By?default??
  336. //?this?event?displays?UI?that?informs?the?end?user?that?the?setup?has?been??
  337. //?completed?successfully.??
  338. //事件的OnFirstUIAfter后调用文件transferof安装时,安装程序在第一次安装模式下运行的框架。??
  339. //默认情况下此事件显示界面,通知最终用户,安装程序已成功完成。??
  340. function?OnFirstUIAfter()??
  341. ????STRING?szTitle,?szOption2;??
  342. ????NUMBER?bOpt1,?bOpt2;????
  343. string?szBmpPath;//自定义??
  344. begin????????
  345. ????????szBmpPath=SUPPORTDIR+"//left.bmp;1;0,0";?????
  346. ????????DialogSetInfo?(DLG_INFO_ALTIMAGE,0); background-color:inherit">//?设置左边的图片???
  347. ????????Disable(STATUSEX);??
  348. ???????????//---------------------------------------??
  349. //安装完成之时??
  350. ????szTitle?=?"阅卷系统安装完毕";??
  351. ????szMsg1?=?"谢谢您使用YHK_GF安装程序!!";???
  352. ????szMsg2?=?"已成功安装网“网上阅卷系统”,请单击“完成”以退出安装向导。";??
  353. ????bOpt1??=?FALSE;??
  354. ????bOpt2??=?FALSE;??
  355. ????szMsg1?=?SdLoadString(IFX_SDFINISH_MSG1);??
  356. ????SdFinishEx(szTitle,?bOpt2);??
  357. //?OnSQLLogin??
  358. function?number?OnSQLLogin(?nBtn?)??
  359. string?sMessage;??
  360. string?szConnection,szDB,?sTemp[MAX_PATH];??//?szServer,?szPassword,???
  361. number?nResult,?nSize,?nCount;??
  362. BOOL???bNext;??//bWinLogin,108); color:inherit; line-height:24px"> LIST???listConnections;??????
  363. STRING?svResult,svLine;//自定义???????
  364. number?nvFileHandle;??????
  365. //First?initialize?SQL?Server?runtime??
  366. //第一初始化的SQL?Server运行??
  367. ????SQLRTInitialize2();??
  368. ???//?Suppress?ISSQLSRV.DLL?to?show?a?connection?error?message.??
  369. //禁止ISSQLSRV.DLL显示连接错误信息??
  370. ????MsiSetProperty(?ISMSI_HANDLE,?"IS_SQLSERVER_CA_SILENT",?"1"?);??
  371. //Get?the?names?of?all?the?necessary?connections??
  372. ????listConnections?=?SQLRTGetConnections();??
  373. ????ListGetFirstString?(listConnections,?szConnection);??
  374. ????nCount?=?0;??
  375. //determine?if?NEXT?or?BACK?will?be?returned???
  376. //if?there?are?no?connections?to?make??
  377. //确定下一个或返回将被退回??
  378. ?????//如果没有连接??
  379. if(?nBtn?!=?BACK?)?then??
  380. ????????bNext?=?TRUE;??
  381. ????????bNext?=?FALSE;??
  382. //start?at?end?if?going?BACK??
  383. ????????????????//退回??
  384. while?(ISERR_SUCCESS?=?ListGetNextString(?listConnections,?szConnection?)?);??
  385. ????????????nCount++;??
  386. ????????endwhile;??
  387. //?Login?for?each?connection??
  388. //登录每个连接??
  389. while?(nResult?=?ISERR_SUCCESS)??
  390. //Get?Default?values?for?connection??
  391. ????????//获得连接字符串??
  392. ????????SQLRTGetConnectionInfo(?szConnection,?szServer,?szDB,?szPassword?);??
  393. ????????bWinLogin?=?SQLRTGetConnectionAuthentication(?szConnection?);??
  394. //?Display?login?dialog?(without?connection?name)??
  395. //显示登录对话框没有连接名称??
  396. //?COMMENT?OUT?TO?SWAP?DIALOGS??
  397. //注释外部全系统计划的对话??
  398. ????????????nResult?=?SQLServerSelectLogin2(?szConnection,?bWinLogin,?FALSE,?TRUE?);??
  399. ??????????????//下面的是只显示?登录用户和密码的不显示数据库和windows登录选择??
  400. ?????????????//nResult?=?SQLServerLogin(?"",?szPassword?);??
  401. //?Display?login?dialog?(with?connection?name)??
  402. //显示登录对话框没有连接名称??
  403. //?UNCOMMENT?TO?SWAP?DIALOGS??
  404. //注释外部全系统计划的对话??
  405. //?nResult?=?SQLServerSelectLogin2(?szConnection,?TRUE,?TRUE?);??
  406. if(?nResult?=?NEXT?)?then??
  407. ????????????//store?data?in?case?we?need?it?again??
  408. ????????????//保存数据库配置信息,以备下次需要??
  409. ????????????SQLRTPutConnectionInfo2(?szConnection,?szPassword?);??
  410. ????????????SQLRTPutConnectionAuthentication(?szConnection,?bWinLogin?);??
  411. //test?connection??????
  412. //测试连接??
  413. ????????????nResult?=?SQLRTTestConnection2(?szConnection,108); color:inherit; line-height:24px"> ????????????nSize?=?MAX_PATH;??
  414. ????????????MsiGetProperty(?ISMSI_HANDLE,?"IS_SQLSERVER_STATUS",?sTemp,?nSize?);??
  415. ???????????if(?sTemp?!=?"0"?)?then??
  416. ????????????????nSize?=?_MAX_PATH;??
  417. ????????????????MsiGetProperty(?ISMSI_HANDLE,?"IS_SQLSERVER_STATUS_ERROR",?sMessage,?nSize?);??
  418. ??????????????????????
  419. if(?nSize?=?0?)?then??
  420. ????????????????????Sprintf(sMessage,?SdLoadString(?IDS_IFX_SQL_ERROR_LOGIN_FAILED?),?szConnection,?SdLoadString(?ISCRIPT_E_UNKNOWN_ERROR_DESC?));??
  421. ????????????????endif;??
  422. ??????????????????
  423. ????????????????MessageBox(?sMessage,?MB_OK?);??
  424. //Show?same?login?dialog?again??
  425. //显示相同的数据库登录对话框??
  426. ????????????????nResult?=?ListCurrentString(listConnections,?szConnection);??
  427. else?//SUCCESS??
  428. ?????????????????//成功??
  429. //继续下一个连接??
  430. //Move?on?to?next?connection??
  431. ????????????????nCount++;??
  432. ????????????????bNext?=?TRUE;??
  433. ????????????????nResult?=?ListGetNextString(listConnections,248); line-height:24px"> ??????????????//?MsiSetProperty??
  434. //设置Property里的值??
  435. (ISMSI_HANDLE,"Connection_Property","server="+szServer+";database=wxd;uid="+szUser+";pwd="+szPassword);??
  436. //BACK??
  437. //回退??
  438. ????????????nCount--;??
  439. ????????????bNext?=?FALSE;??
  440. ????????????nResult?=?ListSetIndex(?listConnections,?nCount?);??
  441. ????????????ListCurrentString(?listConnections,?szConnection?);??
  442. ????endwhile;??
  443. if(?bNext?)?then??
  444. return?NEXT;??
  445. return?BACK;??
  446. end;????????
  447. //?OnMaintUIBefore??
  448. //?The?OnMaintUIBefore?event?is?called?by?the?framework?when?the?setup?is??
  449. //?running?in?maintenance?mode.?By?default?this?event?displays?UI?that??
  450. //?allows?the?end?user?to?add?or?remove?features,?repair?currently??
  451. //?installed?features?or?uninstall?the?application.??
  452. //该事件被称为OnMaintUIBefore由框架时,安装程序?在维护模式下运行。??
  453. //默认情况下此事件显示界面,?允许最终用户添加或删除功能,目前维修?安装的功能或卸载应用程序。??
  454. function?OnMaintUIBefore()??
  455. //自定义???
  456. ????STRING??szBmpPath;?????
  457. ?SetTitle("欢迎您使用银河卡电子公司的软件",?BACKGROUNDCAPTION?);//设置标题??
  458. ??
  459. //如果你要启用的背景,窗口标题,标题和标题栏???????????????????????????????
  460. ??
  461. ??
  462. ??
  463. //?Enable(?FULLWINDOWMODE?);??????????????????????????
  464. //?Enable(?BACKGROUND?);??????????????????????????????
  465. Dlg_Start:??
  466. ??????????
  467. ??????????
  468. //----------------------------------------------------------------??????
  469. //此处为第二次是卸载??
  470. ????svResult???=??SdLoadString(IFX_MAINTUI_MSG);?????
  471. ????szCaption???=?SdLoadString(IFX_ONMAINTUI_CAPTION);???
  472. ????svResult="是否要完全卸载“网上阅卷系统”?";???
  473. ????szCaption="确认卸载";???
  474. ????nResult???=???SprintfBox(MB_OKCANCEL,szCaption,"%s",svResult);?????
  475. if???(nResult???=???IDCANCEL)???then?????
  476. ????????exit;?????
  477. ????elseif(nResult???=???IDOK)???then??????
  478. //???setup???default???status?????
  479. ????????SetStatusWindow(0,???"");?????
  480. ????????Enable(STATUSEX);?????
  481. ????????StatusUpdate(ON,???100);??????
  482. //-->Remove???all???components????
  483. ????????ComponentRemoveAll();??????
  484. //-------------------------------------------------------------------------------------------??
  485. //分离数据库EXEC?sp_detach_db?@dbname?=?'数据库名称'???
  486. //Server=[IS_SQLSERVER_SERVER];User?id=[IS_SQLSERVER_USERNAME];Pwd=[IS_SQLSERVER_PASSWORD];DataBase=wxd;Max?Pool?Size=200;Connect?Timeout=300;Connection?Lifetime=3;???
  487. //DetachDB();??
  488. //-----------------------------------------------------------------------------------------------------???????
  489. //----------------------------------------------------------------------------??
  490. ????DeleteDir(TARGETDIR,ALLCONTENTS);?????
  491. ????DeleteDir(TARGETDIR,ONLYDIR);????
  492. //---------------------------------------------------------------------??
  493. ????endif;?????
  494. return???0;?????
  495. //------------------------------------------------------------??
  496. //?Added?in?Version?9.5?-?Support?for?REMOVEONLY?option.??
  497. //新增的版本9.5?-?为REMOVEONLY选择支持??
  498. if(?!REMOVEONLY?)?then??
  499. //?In?standard?mode?show?maintenance?dialog??
  500. //在标准模式对话框显示维修??
  501. ????????Disable(BACKBUTTON);??
  502. ????????nType?=?SdWelcomeMaint(szTitle,?MODIFY);??
  503. ????????Enable(BACKBUTTON);??
  504. //?Hide?the?initial?progress?dialog?as?otherwise?the?user?can??
  505. //?click?on?it,?and?hide?the?MessageBox.??
  506. //隐藏,否则用户的对话,可以初步进展点击它,并隐藏在MessageBox。??
  507. ????????Disable(?DIALOGCACHE?);??
  508. //?In?RemoveOnly?mode,?set?to?remove.??
  509. //在RemoveOnly模式,设置删除??
  510. ????????nType?=?REMOVEALL;??
  511. //?Show?Uninstall?Confirmation?Dialog??
  512. //显示卸载确认对话框??
  513. if?(?nType?=?REMOVEALL?)?then??
  514. ????????nResult?=?MessageBox(?SdLoadString(?IFX_MAINTUI_MSG?),?MB_YESNO?);??
  515. if?(nResult?!=?IDYES?)?then??
  516. ??????????????
  517. if(?REMOVEONLY?)?then??
  518. //?In?REMOVEONLY?mode,?abort?the?setup.??
  519. //显示卸载确认对话框??
  520. ????????????????abort;??
  521. //?In?non-REMOVEONLY?mode,?redisplay?the?previous?dialog.??
  522. //在非REMOVEONLY模式,重新显示以前的对话。??
  523. goto?Dlg_Start;??
  524. ????nResult?=?NEXT;??
  525. Dlg_SdFeatureTree:??
  526. if?(nType?=?MODIFY)?then??
  527. ????????szTitle?=?"";??
  528. ????????szMsg?=?"";??
  529. ????????nResult?=?SdFeatureTree(szTitle,?2);??
  530. goto?Dlg_Start;??
  531. ????endif;??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读