home *** CD-ROM | disk | FTP | other *** search
/ BUG 1 / BUGCD1996_0708.ISO / pc / aplic / lapis / disk1 / lapis.mst < prev    next >
Text File  |  1995-11-10  |  10KB  |  319 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Sample 1
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST DESTPATH      = 300
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST EXITRESTART   = 750
  18. CONST OPTIONS       = 800
  19. CONST APPHELP       = 900
  20. CONST BADPATH       = 6400
  21.  
  22. CONST TRUE      = -1
  23. CONST FALSE     = 0
  24.  
  25. ''Bitmap ID
  26. CONST LOGO = 1
  27.  
  28. const MB_ICONINFORMATION = 64
  29.  
  30. 'declare sub MessageBox lib "user.exe" (hwnd%, message$,title$, options%)
  31.  
  32.  
  33. GLOBAL DEST$        ''Default destination directory.
  34. GLOBAL OPTCUR$      ''Option selection from option dialog.
  35. GLOBAL DestDrive$
  36. GLOBAL PRODUCTNAME$
  37. GLOBAL WinDrive$
  38.  
  39. DECLARE SUB Install
  40. DECLARE FUNCTION CheckSpace () AS INTEGER
  41. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  42.  
  43. DECLARE FUNCTION ShowWindow  LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  44. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG     ''this declaration must all be on one line
  45. DECLARE FUNCTION     MessageBox LIB "User" (hwnd%, message$,title$, options%) AS INTEGER
  46.  
  47. DECLARE FUNCTION CreateScalableFontResource LIB "gdi.exe" (fHidden%,ResFile$,FontFile$,CurrentPath$) AS INTEGER
  48. DECLARE FUNCTION AddFontResource LIB "gdi.exe" (ResFile$) AS INTEGER
  49.  
  50. DECLARE FUNCTION WriteProfileString Lib "Kernel" (lpApplicationName$, lpKeyName$, lpString$) AS INTEGER
  51.  
  52. INIT:
  53. '**************************************************************************************************
  54. '--------------------------------------------------------------------------
  55. ''following were taken from windows.h. &H means they're hex
  56. CONST WS_VISIBLE=&H10000000
  57. CONST WS_BORDER =&H00800000
  58. CONST WS_CLIPCHILDREN =&H02000000
  59. CONST GWL_STYLE =-16
  60.  
  61. CONST SW_SHOWMAXIMIZED=3
  62.  
  63. hWnd%=HwndFrame()
  64. i1&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN)
  65. j1%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  66. '--------------------------------------------------------------------------
  67. '**************************************************************************************************
  68.      PRODUCTNAME$ = "LAPIS 1.5"
  69.      CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  70.      HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  71.  
  72.      SetBitmap CUIDLL$, LOGO
  73.      SetTitle PRODUCTNAME$ + " Setup"
  74.  
  75.      szInf$ = GetSymbolValue("STF_SRCINFPATH")
  76.      IF szInf$ = "" THEN
  77.           szInf$ = MakePath(GetSymbolValue("STF_CWDDIR"),"LAPIS.INF")
  78.      END IF
  79.      ReadInfFile szInf$
  80.  
  81.      OPTCUR$ = "1.5"
  82.      DEST$ = "C:\LAPIS"
  83.  
  84.      WinDrive$ = MID$(GetWindowsDir, 1, 1)
  85.      IF IsDriveValid(WinDrive$) = 0 THEN
  86.           i% = DoMsgBox("Upisani disk ('"+WinDrive$+"') nije valjana vrijednost.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  87.           GOTO QUIT
  88.      END IF
  89.  
  90. WELCOME:
  91.      sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  92.      IF sz$ = "CONTINUE" THEN
  93.           UIPop 1
  94.      ELSE
  95.           GOSUB ASKQUIT
  96.           GOTO WELCOME
  97.      END IF
  98.  
  99. GETPATH:
  100.      SetSymbolValue "EditTextIn", DEST$
  101.      SetSymbolValue "EditFocus", "END"
  102. GETPATHL1:
  103.      sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  104.      DEST$ = GetSymbolValue("EditTextOut")
  105.  
  106.      IF sz$ = "CONTINUE" THEN
  107.           DestDrive$ = MID$(DEST$, 1, 1)
  108.           IF IsDriveValid(DestDrive$) = 0 THEN
  109.          GOSUB BADPATH
  110.                 GOTO GETPATHL1
  111.           END IF
  112.           IF IsDirWritable(DEST$) = 0 THEN
  113.                 GOSUB BADPATH
  114.                 GOTO GETPATHL1
  115.           END IF
  116.           UIPop 1
  117.      ELSEIF sz$ = "REACTIVATE" THEN
  118.           GOTO GETPATHL1
  119.      ELSEIF sz$ = "BACK" THEN
  120.           GOTO GETPATHL1
  121.      ELSE
  122.           GOSUB ASKQUIT
  123.           GOTO GETPATH
  124.      END IF
  125.  
  126.      IF CheckSpace() = FALSE THEN
  127.     GOTO GETPATH
  128.      END IF
  129.  
  130.      Install     'POZIVA sub funckiju koja instalira program
  131.  
  132. QUIT:
  133.      ON ERROR GOTO ERRQUIT
  134.  
  135.      IF ERR = 0 THEN
  136.           IF RestartListEmpty() = 0 THEN
  137.          dlg% = EXITRESTART
  138.           ELSE
  139.                 dlg% = EXITSUCCESS
  140.           END IF
  141.      ELSEIF ERR = STFQUIT THEN
  142.           dlg% = EXITQUIT
  143.      ELSE
  144.           dlg% = EXITFAILURE
  145.      END IF
  146. QUITL1:
  147.      sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  148.      IF sz$ = "REACTIVATE" THEN
  149.           GOTO QUITL1
  150.      END IF
  151.      UIPop 1
  152.  
  153.      IF dlg% = EXITRESTART THEN
  154.     j% = ExitExecRestart()
  155.      END IF
  156.      END
  157.  
  158. ERRQUIT:
  159.      i% = DoMsgBox("IzvoriÜne instalacijske datoteke su oÜteµene!", "Poruka instalacije", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  160.      END
  161.  
  162. BADPATH:
  163.      sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  164.      IF sz$ = "REACTIVATE" THEN
  165.           GOTO BADPATH
  166.      END IF
  167.      UIPop 1
  168.      RETURN
  169.  
  170. ASKQUIT:
  171.      sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  172.  
  173.      IF sz$ = "EXIT" THEN
  174.           UIPopAll
  175.           ERROR STFQUIT
  176.      ELSEIF sz$ = "REACTIVATE" THEN
  177.           GOTO ASKQUIT
  178.      ELSE
  179.           UIPop 1
  180.      END IF
  181.      RETURN
  182.  
  183. '**************************************************************************************************
  184. '**
  185. '** Purpose:
  186. '**     Builds the copy list and performs all installation operations.
  187. '** Arguments:
  188. '**     none.
  189. '** Returns:
  190. '**     none.
  191. '**************************************************************************************************
  192. STATIC FUNCTION CheckSpace() AS INTEGER
  193.  
  194.      SrcDir$ = GetSymbolValue("STF_SRCDIR")
  195.  
  196.      ClearCopyList
  197.  
  198.             'Komentar iskljucuje setup datoteke
  199.      'AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  200.  
  201.      AddSectionFilesToCopyList "Root", SrcDir$, DEST$
  202.      AddSectionFilesToCopyList "Slike", SrcDir$, MakePath(DEST$,"Slike")
  203.                  'AddSectionFilesToCopyList "Primjeri", SrcDir$, MakePath(DEST$,"Primjeri")
  204.      AddSectionFilesToCopyList "Obrasci", SrcDir$, MakePath(DEST$,"Obrasci")
  205.      AddSectionFilesToCopyList "System", SrcDir$, GetWindowsSysDir()
  206.      'AddSectionFilesToCopyList "Windows", SrcDir$, GetWindowsDir()
  207.  
  208.      FOR i% = 1 TO 26 STEP 1
  209.           AddListItem "EXTRA", "0"
  210.      NEXT i%
  211.  
  212.      wd% = ASC(ucase$(WinDrive$)) - ASC("A") + 1
  213.      dd% = ASC(ucase$(DestDrive$)) - ASC("A") + 1
  214.  
  215.      ReplaceListItem "EXTRA", wd%, "10240"
  216.  
  217.      spaceNeeded& = GetCopyListCost("EXTRA","COST","NEEDED")
  218.      IF spaceNeeded& = 0 THEN
  219.     CheckSpace = TRUE
  220.      ELSE
  221.     CheckSpace = FALSE
  222.     w& = VAL(GetListItem("NEEDED",wd%))
  223.     d& = VAL(GetListItem("NEEDED",dd%))
  224.     m$ = "Nema dovoljno prostora na disku za instalirati Lapis."
  225.     IF d& > 0 THEN
  226.          m$ = m$ + CHR$(10) + CHR$(10)
  227.          m$ = m$ + "Potrebito je dodatnih " + STR$((d&+999)/1000) + " kilobytea na disku " + DestDrive$ + "."
  228.                 m$ = m$ + " Izaberite drugi disk za instalaciju, ili oslobodite dodatnog mjesta na disku " + DestDrive$ + "."
  229.           END IF
  230.     IF (w& > 0) AND (wd% <> dd%) THEN
  231.          m$ = m$ + CHR$(10) + CHR$(10)
  232.          m$ = m$ + "Morate osloboditi dodatnih " + STR$((w&+999)/1000) + " kilobytea na disku " + WinDrive$
  233.                 m$ = m$ + " prije instalacije Lapisa."
  234.     END IF
  235.     i% = DoMsgBox(m$,"Nema dovoljno prostora na disku",MB_TASKMODAL+MB_OK+MB_ICONHAND)
  236.      END IF
  237.  
  238.  
  239. END FUNCTION
  240.  
  241. '**************************************************************************************************
  242. STATIC SUB Install
  243.  
  244.      CreateDir DEST$, cmoNone
  245.      CreateDir MakePath(DEST$,"Slike"), cmoNone
  246.  
  247.      SetRestartDir DEST$
  248.  
  249.      CopyFilesInCopyList
  250.  
  251.  
  252.      IniFile$ = MakePath(GetWindowsDir(),"lapis.ini")
  253.      'IF DoesFileExist(IniFile$,femReadWrite) = 1 THEN
  254.      'RemoveFile IniFile$,cmoNone
  255.      'END IF
  256.  
  257.      IF DoesIniSectionExist(IniFile$,"Registration") THEN
  258.      RemoveIniSection IniFile$,"Registration",cmoNone
  259.      END IF
  260.  
  261.      CreateProgmanGroup "Lapis", "", cmoNone
  262.      ShowProgmanGroup  "Lapis", 1, cmoNone
  263.      CreateProgmanItem "Lapis", PRODUCTNAME$, MakePath(DEST$,"lapis.exe"), "", cmoOverwrite
  264.      CreateProgmanItem "Lapis", "Lapis", MakePath(DEST$,"lapis.hlp"), "", cmoOverwrite
  265.      CreateProgmanItem "Lapis", "PolarGraf", MakePath(DEST$,"polargrf.hlp"), "", cmoOverwrite
  266.  
  267.  
  268.  
  269.      dumm% = WriteProfileString("Extensions", "rtf", MakePath(DEST$,"lapis.exe") + " ^.rtf")
  270.  
  271.  
  272.     if RestartListEmpty ()=0 then
  273.         ii% = MessageBox (hwndFrame , "Sada µe se Windows ponovo pokrenuti.", "Lapis Instalacijska poruka", MB_OK+MB_ICONINFORMATION)
  274.         eer:
  275.         i% = ExitExecRestart ()
  276.         jj% = MessageBox (hwndFrame , "Windows se ne mo₧e ponovo pokrenuti, jer je aktivan MS-DOS program.  Zatvorite sve MS-DOS programe, a zatim pritisnite OK.", "Lapis Instalacijska poruka", MB_OK + MB_ICONSTOP)
  277.         goto eer
  278.     end if
  279.  
  280. '            if RestartListEmpty ()=0 then
  281.  '             '' The following two lines must go on one line.
  282.   '             MessageBox hwndFrame (), "Sada µe se Windows ponovo pokrenuti.", "Lapis Instalacijska poruka", MB_OK+MB_ICONINFORMATION
  283.     '        eer:
  284.      '         i%=ExitExecRestart ()
  285.       '
  286.         '     '' The following three lines must go on one line.
  287.          '     MessageBox hwndFrame (), "Windows se ne mo₧e ponovo pokrenuti, jer je aktivan MS-DOS program.  Zatvorite sve MS-DOS programe, a zatim pritisnite OK.", "Lapis Instalacijska poruka", MB_OK+MB_ICONSTOP
  288.           '     goto eer
  289.             'end if
  290.  
  291. END SUB
  292. '**************************************************************************************************
  293. '**
  294. '** Purpose:
  295. '**     Appends a file name to the end of a directory path,
  296. '**     inserting a backslash character as needed.
  297. '** Arguments:
  298. '**     szDir$  - full directory path (with optional ending "\")
  299. '**     szFile$ - filename to append to directory
  300. '** Returns:
  301. '**     Resulting fully qualified path name.
  302. '*************************************************************************
  303. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  304.      IF szDir$ = "" THEN
  305.           MakePath = szFile$
  306.      ELSEIF szFile$ = "" THEN
  307.     IF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  308.          MakePath = MID$(szDir$, 1, LEN(szDir$)-1)
  309.     ELSE
  310.          MakePath = szDir$
  311.     END IF
  312.      ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  313.           MakePath = szDir$ + szFile$
  314.      ELSE
  315.           MakePath = szDir$ + "\" + szFile$
  316.      END IF
  317. END FUNCTION
  318.  
  319.