home *** CD-ROM | disk | FTP | other *** search
/ PC Direkt 1995 #3 / PCD_395.iso / khk / pckwin / setup.mst < prev    next >
Encoding:
Text File  |  1994-05-18  |  22.1 KB  |  810 lines

  1. '**************************************************************************
  2. '* Project : KHK-Setup-Routinen
  3. '*-------------------------------------------------------------------------
  4. '* Module  : Setup
  5. '*-------------------------------------------------------------------------
  6. '* File       : PCKWIN.MST
  7. '*-------------------------------------------------------------------------
  8. '* Datum   : 21/04/93
  9. '*-------------------------------------------------------------------------
  10. '* von     : (C) 1993 KHK Software            Klaus Klinger
  11. '*-------------------------------------------------------------------------
  12. '* Aufgabe : Installationsscript fⁿr den PC-Kaufmann
  13. '*-------------------------------------------------------------------------
  14. '* History : 21/04/93    Erstellt            Klaus Klinger
  15. '**************************************************************************
  16.  
  17. '* INCLUDES ---------------------------------------------------------------
  18.  
  19. '$INCLUDE 'setupapi.inc'
  20. '$INCLUDE 'msdetect.inc'
  21. '$INCLUDE 'khksetup.inc'
  22.  
  23. '* DEFINES ----------------------------------------------------------------
  24.  
  25. CONST KHKMSG        = "Setup Nachricht"
  26. CONST KHKDRIVE1        = "Windows Laufwerk ('"
  27. CONST KHKDRIVE2        = "') ist ungⁿltig."
  28.  
  29. CONST TRUE        = 1
  30. CONST FALSE        = 0
  31. CONST ABORT        = -1
  32. CONST HDMEMORY        = -2
  33. CONST ABORTALL        = -3
  34.  
  35. CONST BASEDIR           = "\DATA"
  36. CONST DEMODATEN        = "\1"
  37. CONST STAMM             = "\STAMM"
  38.  
  39. CONST QUESTION        = MB_YESNOCANCEL+MB_TASKMODAL+MB_QUESTION
  40. CONST OKMSG        = MB_OK+MB_TASKMODAL+MB_ICONHAND
  41.  
  42. '* GLOBALS ----------------------------------------------------------------
  43.  
  44. GLOBAL szExecDir$
  45. GLOBAL szDataDir$
  46. GLOBAL szTempDir$
  47. GLOBAL szWindDir$
  48. GLOBAL szCountry$
  49.  
  50. GLOBAL DestOldDataDir$
  51. GLOBAL UseOption$        ''
  52.  
  53. GLOBAL nUpdate%
  54. GLOBAL nUser%
  55.  
  56. '* DECLARES ---------------------------------------------------------------
  57.  
  58. '*
  59. '* Interne Deklarationen *****************************************************
  60. '*
  61.  
  62. DECLARE SUB WriteSystemInfo
  63. DECLARE FUNCTION Install AS INTEGER
  64. DECLARE FUNCTION GetCompany(szUserName$,szCompany$,szSerial$) AS INTEGER
  65. DECLARE FUNCTION TestPath (szDir$) AS INTEGER
  66. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  67.  
  68. '*
  69. '* Externe Deklarationen *****************************************************
  70. '*
  71.  
  72. DECLARE FUNCTION GetFreeSpace LIB "kernel" (Dummy%) AS LONG
  73. DECLARE FUNCTION ShowWindow LIB "user" (hWnd%,nType%) AS INTEGER
  74.  
  75. INIT:
  76.     bOk%=GetInstallState(VARPTR(nUpdate%),VARPTR(nUser%))
  77.  
  78.     SetBitmap RESDLL$,LOGOBITMAP+nUpdate%
  79.  
  80.     szStr$=STRING$(80,32)
  81.     bOk%=GetVersionInfo(NULL,szStr$)
  82.     SetTitle "Installation des "+szStr$
  83.     SetAbout "KHK Setup","Version 1.1"
  84.  
  85.     hWnd% = HwndFrame()
  86.     bOk% = ShowWindow(hWnd%,3)
  87.  
  88.     '*
  89.     '* Test, ob vorhandener Speicher ausreichend ist *********************
  90.     '*
  91.  
  92.     Memory&=GetFreeSpace(0)
  93.     IF Memory& < MINMEMORY& THEN
  94.         sz$ = UIStartDlg(CUIDLL$,IDD_OUTOFMEMORY,"InfoDlgProc",0,"")
  95.         UIPop 1        
  96.         IF nUpdate% = VER_UPDATE THEN
  97.             ERR = IDD_EXITFAILURE_UPDATE
  98.         ELSE
  99.             ERR = IDD_EXITFAILURE
  100.         END IF
  101.         
  102.         GOTO QUIT
  103.     END IF
  104.  
  105.     '*
  106.     '* Verzeichnisse vorbelegen ******************************************
  107.     '*
  108.  
  109.         szWindDir$ = GetWindowsDir
  110.     szTempDir$ = GetWindowsDir
  111.  
  112.     szInfoFile$ = GetSymbolValue("STF_SRCINFPATH")
  113.     IF szInfoFile$ = "" THEN
  114.         szInfoFile$ = GetSymbolValue("STF_CWDDIR") + STDINFFILE
  115.     END IF
  116.     ReadInfFile szInfoFile$
  117.  
  118.     szExecDir$ = STRING$(128,32)
  119.     szDataDir$ = STRING$(128,32)
  120.     szTempDir$ = STRING$(128,32)
  121.  
  122.     KHKIniFile$ = MakePath(szWindDir$,"WIN.INI")
  123.     szCountry$ = GetIniKeyString(KHKIniFile$,"intl","iCountry")
  124.  
  125.     '*
  126.     '* Alte Pfade ermitteln ...
  127.     '* 
  128.     szIniFile$=STRING$(96,32)
  129.     bOk%=GetInstallFlags(OPT_INIFILE,VTYPE_STR,szIniFile$)
  130.     IF bOk% <> -1 THEN 
  131.         KHKIniFile$ = MakePath(szWindDir$,szIniFile$)
  132.  
  133.         szExecDir$ = GetIniKeyString(KHKIniFile$,"Path","ExecDir")
  134.         szDataDir$ = GetIniKeyString(KHKIniFile$,"Path","BaseDir")
  135.         szTempDir$ = szDataDir$ + "\temp"
  136.  
  137.         IF LEN(szExecDir$)=0 OR LEN(szDataDir$)=0 THEN
  138.             szExecDir$ = STRING$(128,32)
  139.             szDataDir$ = STRING$(128,32)
  140.             szTempDir$ = STRING$(128,32)
  141.  
  142.             bOk% = GetDefaultPath(szExecDir$,szDataDir$,szTempDir$)
  143.         END IF
  144.     ELSE
  145.         bOk% = GetDefaultPath(szExecDir$,szDataDir$,szTempDir$)
  146.     END IF
  147.  
  148.     '*
  149.     '* Installationsverzeichnis abfragen *********************************
  150.     '*
  151.  
  152. GETPATH:
  153.     SetSymbolValue "ExecDirInp",szExecDir$
  154.     SetSymbolValue "DataDirInp",szDataDir$
  155.     SetSymbolValue "CountryInp",szCountry$
  156.     
  157.     SetSymbolValue "EditFocus","END"
  158.  
  159. GETPATHL1:
  160.         IF nUser% <> 1 THEN
  161.         nDlg%=IDD_GETPATH_UPDATE
  162.     ELSE
  163.         nDlg%=IDD_GETPATH
  164.     END IF
  165.     sz$ = UIStartDlg(CUIDLL$,nDlg%,"PathDlgProc",0,"")
  166.     szExecDir$ = GetSymbolValue("ExecDirOut")
  167.     szExecDir$ = UCASE$(szExecDir$)
  168.  
  169.     szDataDir$ = GetSymbolValue("DataDirOut")
  170.     szDataDir$ = UCASE$(szDataDir$)
  171.  
  172.     szCountry$ = GetSymbolValue("CountryOut")
  173.     SetSymbolValue "CountryInp",szCountry$
  174.  
  175.     IF sz$ = "CONTINUE" THEN
  176.         bOk% = TestPath(szExecDir$)
  177.         IF bOk% = TRUE THEN
  178.             '* KHKIniFile$ = MakePath(szWindDir$,"PCKWIN.INI")
  179.             '* sz$ = GetIniKeyString(KHKIniFile$,KHKPATHSECTION,"ExecDir")
  180.             '* IF sz$ <> "" THEN
  181.             '*    '* AND sz$ = DestProgDir$ THEN
  182.             '*    sz$ = FindFileInTree("pckwin.exe",sz$)
  183.             '*    IF sz$ <> "" THEN
  184.             '*        '* HasPatched(sz$) ...
  185.             '*    END IF
  186.             '* END IF
  187.             UIPop 1
  188.         ELSE
  189.             GOTO GETPATHL1
  190.         END IF
  191.  
  192.         bOk% = TestPath(szDataDir$)
  193.         IF bOk% = FALSE THEN
  194.             GOTO GETPATHL1
  195.         END IF
  196.     ELSE
  197.         GOSUB ASKQUIT
  198.         GOTO GETPATH
  199.     END IF
  200.  
  201.     '*
  202.     '* Installationsart abfragen *****************************************
  203.     '*
  204.  
  205. INSTALLTYPE:
  206.     IF nUpdate% = VER_UPDATE THEN
  207.         sz$ = "STANDARD"
  208.     ELSE
  209.         UseOption$ = "UseOption"
  210.         sz$ = UIStartDlg(CUIDLL$,IDD_INSTALLTYPE,"InstallDlgProc",0,"")
  211.         UIPop 1
  212.     END IF
  213.  
  214.     IF sz$ = "STANDARD" THEN
  215.         bOk%=GetOptionList(szCountry$,-1)
  216.         bOk%=Install
  217.         IF bOk% = FALSE THEN
  218.             IF nUpdate% = VER_UPDATE THEN
  219.                 ERR = IDD_EXITFAILURE_UPDATE
  220.             ELSE
  221.                 ERR = IDD_EXITFAILURE
  222.             END IF
  223.             GOTO QUIT
  224.         ELSEIF bOk% = ABORT THEN
  225.             GOTO INSTALLTYPE
  226.         ELSEIF bOk% = HDMEMORY THEN 
  227.             GOTO GETPATH
  228.         ELSEIF bOk% = ABORTALL THEN
  229.             GOTO QUITALL
  230.         END IF
  231.         GOTO QUIT
  232.     ELSEIF sz$ = "MINIMAL" THEN
  233.         bOk%=GetOptionList(szCountry$,0)
  234.         bOk%=Install
  235.         IF bOk% = FALSE THEN
  236.             IF nUpdate% = VER_UPDATE THEN
  237.                 ERR = IDD_EXITFAILURE_UPDATE
  238.             ELSE
  239.                 ERR = IDD_EXITFAILURE
  240.             END IF
  241.             GOTO QUIT
  242.         ELSEIF bOk% = ABORT THEN
  243.             GOTO INSTALLTYPE
  244.         ELSEIF bOk% = HDMEMORY THEN 
  245.             GOTO GETPATH
  246.         ELSEIF bOk% = ABORTALL THEN
  247.             GOTO QUITALL
  248.         END IF
  249.         GOTO QUIT
  250.     ELSEIF sz$ = "CUSTOM" THEN
  251.         GOTO OPTION
  252.     ELSE
  253.         GOTO GETPATH
  254.     END IF
  255.  
  256. OPTION:
  257.     UseOption$ = "UseOption"
  258.  
  259.     '*
  260.     '* Bereits installierte Komponenten nicht aktivieren *****************
  261.     '*
  262.  
  263. OPTION1:
  264.     sz$ = UIStartDlg(CUIDLL$,IDD_OPTIONS,"OptionsDlgProc",0,"")
  265.  
  266.     IF sz$ = "CONTINUE" THEN
  267.         UIPop 1
  268.     ELSE
  269.         UIPop 1
  270.         GOTO INSTALLTYPE
  271.     END IF
  272.  
  273. ProcedAll:
  274.     bOk%=Install
  275.  
  276.     IF bOk% = FALSE THEN
  277.         IF nUpdate% = VER_UPDATE THEN
  278.             ERR = IDD_EXITFAILURE_UPDATE
  279.         ELSE
  280.             ERR = IDD_EXITFAILURE
  281.         END IF
  282.         GOTO QUIT
  283.     ELSEIF bOk% = ABORT THEN
  284.         GOTO INSTALLTYPE
  285.     ELSEIF bOk% = HDMEMORY THEN 
  286.         GOTO GETPATH
  287.     ELSEIF bOk% = ABORTALL THEN
  288.         GOTO QUITALL
  289.     END IF
  290.  
  291. QUIT:
  292.     ON ERROR GOTO ERRQUIT
  293.  
  294.     IF ERR = 0 THEN
  295.         IF nUpdate% = VER_UPDATE THEN
  296.             dlg% = IDD_EXITSUCCESS_UPDATE
  297.         ELSE
  298.             dlg% = IDD_EXITSUCCESS
  299.         END IF
  300.     ELSEIF ERR = STFQUIT THEN
  301.         IF nUpdate% = VER_UPDATE THEN
  302.             dlg% = IDD_EXITQUIT_UPDATE
  303.         ELSE
  304.             dlg% = IDD_EXITQUIT
  305.         END IF
  306.     ELSE
  307.         IF nUpdate% = VER_UPDATE THEN
  308.             dlg% = IDD_EXITFAILURE_UPDATE
  309.         ELSE
  310.             dlg% = IDD_EXITFAILURE
  311.         END IF
  312.     END IF
  313. QUITL1:
  314.     sz$ = UIStartDlg(CUIDLL$,dlg%,"InfoDlgProc",0,"")
  315.     IF sz$ = "CONTINUE" THEN
  316.         GOTO QUITL1
  317.     END IF
  318.     UIPop 1
  319.     END
  320.  
  321. ERRQUIT:
  322.     i% = DoMsgBox("Setup-Dateien sind beschΣdigt, benachrichtigen Sie bitte KHK!",KHKMSG,OKMSG)
  323. QUITALL:
  324.     END
  325.  
  326. ASKQUIT:
  327.     sz$ = UIStartDlg(CUIDLL$,IDD_ASKQUIT,"InfoDlgProc",0,"")
  328.  
  329.     IF sz$ = "EXIT" THEN
  330.         UIPopAll
  331.         END
  332.     ELSEIF sz$ = "REACTIVATE" THEN
  333.         GOTO ASKQUIT
  334.     ELSE
  335.         UIPop 1
  336.     END IF
  337.     RETURN
  338.  
  339. '*============================================================================
  340. '* Funktion :    Install
  341. '*============================================================================
  342. '* Aufgabe  :   CopyList aufbauen und alle erforderlichen Operationen für die
  343. '*        Installation durchführen
  344. '*----------------------------------------------------------------------------
  345. '* Parameter:    Keine
  346. '*----------------------------------------------------------------------------
  347. '* Return   :    BOOL        TRUE/FALSE
  348. '*==========================================================================*/
  349.  
  350. FUNCTION Install STATIC AS INTEGER
  351.     szUserName$ = STRING$(64,32)
  352.     szCompany$  = STRING$(64,32)
  353.     szSerial$   = STRING$(64,32)
  354.  
  355.     bExec%=FALSE
  356.     bDemo%=FALSE
  357.  
  358.     CreateDir szExecDir$,cmoNone
  359.     OpenLogFile MakePath(szExecDir$,"LOGFILE.OUT"),TRUE
  360.  
  361.     bNet% = IsDriveNetwork(MID$(szExecDir$,1,1))
  362.     szBuffer$ = STRING$(64,32)
  363.  
  364.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  365.  
  366.         CreateDir szDataDir$, cmoNone
  367.     CreateDir szDataDir$ + "\1",cmoNone
  368.     CreateDir szDataDir$ + "\TEMP",cmoNone
  369.     CreateDir szDataDir$ + "\STAMM",cmoNone
  370.     '* CreateDir szExecDir$ + "\BACKUP",cmoNone
  371.  
  372.     szTempDir$=szDataDir$ + "\TEMP"
  373.  
  374.     '*
  375.     '* Write Logfile *****************************************************
  376.     '*
  377.  
  378.     WriteSystemInfo
  379.  
  380.     nEntry%=GetListLength(UseOption$)
  381.  
  382.     szSec$=STRING$(96,32)
  383.     szPath$=STRING$(96,32)
  384.     szOpt$=STRING$(10,32)
  385.  
  386.     FOR nCount%=1 TO nEntry%
  387.         sz$=GetListItem(UseOption$,nCount%)
  388.         iSec%=GetListSection(sz$,szSec$,szPath$)
  389.  
  390.         IF iSec% <> -1 THEN
  391.             bOk%=GetSectionString(iSec%,NULL,NULL,NULL,szOpt$,NULL)
  392.             IF VAL(szOpt$)=0 THEN
  393.                 bExec%=TRUE
  394.             END IF
  395.  
  396.             bOk%=ExpandMacros(szPath$,szPath$,szExecDir$,szDataDir$,szTempDir$,szWindDir$)
  397.             AddSectionFilesToCopyList szSec$,SrcDir$,szPath$
  398.             IF szPath$=szDataDir$ + "\1" THEN
  399.                 bDemo%=TRUE
  400.             END IF
  401.             '* i% = DoMsgBox("ADD:" + szSec$ + " - " + szPath$,KHKMSG,OKMSG)
  402.         END IF
  403.     NEXT nCount%
  404.  
  405.  
  406.     sz$ = UIStartDlg(CUIDLL$,IDD_WAITPLEASE,"MessageDlgProc",0,"")
  407.  
  408.     szCosts$  = "Cost"
  409.     szNeeded$ = "Need"
  410.     dwLong& = GetCopyListCost("",szCosts$,szNeeded$)
  411.     IF dwLong& <> 0 THEN
  412.         bMem% = FALSE
  413.         FOR nCount%=1 To 26
  414.             sz$ = GetListItem(szNeeded$,nCount%)
  415.             Size& = VAL(sz$)
  416.             IF Size& > 0 THEN
  417.                 sz$ = STR$(Size& / 1000)
  418.                 bOk% = DoMsgBox("Sie ben÷tigen mindestens noch" + sz$ + " KB"+CHR$(13)+"auf Laufwerk " + CHR$(nCount% + 64) + ":\",KHKMSG,OKMSG)
  419.  
  420.                 ClearCopyList
  421.                 CloseLogFile
  422.                 Install=HDMEMORY
  423.  
  424.                 bMem% = TRUE
  425.             END IF
  426.         NEXT nCount%
  427.  
  428.         IF bMem% = TRUE THEN
  429.             UIPop 1
  430.             EXIT FUNCTION
  431.         END IF
  432.     END IF
  433.  
  434.     UIPop 1
  435.  
  436.     nEntry%=GetInstallFlags(OPT_BILLBOARD,VTYPE_INT,NULL)
  437.     IF nEntry% THEN
  438.         bOk%=SetPictureCount(0)
  439.         FOR nCount%=1 TO nEntry%
  440.             AddToBillboardList CUIDLL$,IDD_PICTURE,"PictureDlgProc",5
  441.         NEXT nCount%
  442.     END IF
  443.  
  444.     bOk% = GetInstallFlags(OPT_DBSTST,VTYPE_INT,NULL)
  445.     IF bOk%=TRUE AND bExec%=TRUE AND nUpdate% <> VER_UPDATE THEN
  446.         bOk% = GetCompany(szUserName$,szCompany$,szSerial$)
  447.  
  448.         WriteToLogFile "  Anwendername " + szUserName$
  449.         WriteToLogFile "  Firmenname   " + szCompany$
  450.         WriteToLogFile "  Land         " + szCountry$
  451.         WriteToLogFile ""
  452.  
  453.         IF bOk% = FALSE THEN
  454.             Install = ABORT
  455.             EXIT FUNCTION
  456.         END IF
  457.     END IF
  458.  
  459.         bOk%=GetScreenInfo(VARPTR(DlgX%),VARPTR(DlgY%))
  460.         SetCopyGaugePosition DlgX%-150,DlgY%-80
  461.  
  462.     IF bDemo% = TRUE THEN
  463.         bOk%=ExDelDir(szDataDir$+"\1",0)
  464.     END IF
  465.  
  466.     bOk% = CopyFilesInCopyList
  467.     IF bOk% = grcUserQuit THEN
  468.         Install = ABORTALL
  469.         CloseLogFile
  470.         EXIT FUNCTION 
  471.     END IF
  472.  
  473.     '* DumpCopyList "e:\PCKWIN.LST"
  474.  
  475.     '*
  476.     '* Create Global Profileentries **************************************
  477.     '*
  478.  
  479.     nEntry%=GetProfileEntry
  480.     IF nEntry% > 0 AND bExec%=TRUE THEN
  481.         szFile$=STRING$(96,32)
  482.         szSec$=STRING$(32,32)
  483.         szKey$=STRING$(32,32)
  484.         szVal$=STRING$(128,32)
  485.  
  486.         FOR nType%=0 TO nEntry%
  487.             bOk%=GetProfileItem(nType%,szFile$,szSec$,szKey$,szVal$)
  488.  
  489.             bOk%=ExpandMacros(szFile$,szFile$,szExecDir$,szDataDir$,szTempDir$,szWindDir$)
  490.             bOk%=ExpandMacros(szSec$,szSec$,szExecDir$,szDataDir$,szTempDir$,szWindDir$)
  491.             bOk%=ExpandMacros(szVal$,szVal$,szExecDir$,szDataDir$,szTempDir$,szWindDir$)
  492.  
  493.             IniFile$=MakePath(szWindDir$,szFile$)
  494.             CreateIniKeyValue IniFile$,szSec$,szKey$,szVal$,cmoOverwrite
  495.         NEXT nType%
  496.     END IF
  497.  
  498.     '*
  499.     '* Btrieve-Test ******************************************************
  500.     '*
  501.     bOk% = GetInstallFlags(OPT_DBSTST,VTYPE_INT,NULL)
  502.     IF bOk%=TRUE AND bExec%=TRUE AND nUpdate% <> VER_UPDATE THEN
  503.         hWnd% = HwndFrame()
  504.         szDbsVer$=STRING$(20,32)
  505.  
  506.         Res%  = MakeBtrvTest(hWnd%,FALSE,szDataDir$,szDataDir$ + "\TEMP",szDbsVer$)
  507.         i% = GetBtrvErrorState(Res%,szBuffer$)
  508.  
  509.         WriteToLogFile ""
  510.         WriteToLogFile "Btrieve-Test"
  511.         WriteToLogFile ""
  512.         WriteToLogFile "  BTrieve-Version :" + szDbsVer$
  513.  
  514.         IF Res% = 0 THEN
  515.             WriteToLogFile "  Der Test wurde erfolgreich abgeschloßen: "+STR$(Res%)+" "+szBuffer$
  516.         ELSE
  517.             WriteToLogFile "  Der Test wurde nicht erfolgreich abgeschloßen."
  518.             WriteToLogFile "  Fehlercode des Testroutine: " + STR$(Res%)+" "+szBuffer$
  519.  
  520.             IF Res% = -7 THEN
  521.                 Install = ABORT
  522.                 EXIT FUNCTION
  523.             END IF
  524.  
  525.             i% = DoMsgBox("Btrieve-Test fehlgeschlagen: "+STR$(Res%),KHKMSG,OKMSG)
  526.  
  527.             CloseLogFile
  528.             EXIT FUNCTION
  529.         END IF
  530.         WriteToLogFile ""
  531.     END IF
  532.  
  533.     '*
  534.     '* Create Groupfile for KHK-Application ******************************
  535.     '*
  536.  
  537.     nEntry%=GetGroupEntry
  538.     IF nEntry%>0 AND bExec%=TRUE THEN
  539.         szGroup$=STRING$(32,32)
  540.         szPath$=STRING$(96,32)
  541.         szCmd$=STRING$(96,32)
  542.  
  543.         FOR nType%=0 TO nEntry%
  544.             bOk%=GetGroupString(nType%,szGroup$,szPath$,szCmd$)
  545.  
  546.             bOk%=ExpandMacros(szPath$,szPath$,szExecDir$,szDataDir$,szTempDir$,szWindDir$)
  547.             bOk%=ExpandMacros(szCmd$,szCmd$,szExecDir$,szDataDir$,szTempDir$,szWindDir$)
  548.  
  549.             CreateProgmanGroup szGroup$,"",cmoNone
  550.             ShowProgmanGroup   szGroup$, 1,cmoNone
  551.             CreateProgmanItem  szGroup$,szPath$,szCmd$,"",cmoOverwrite
  552.         NEXT nType%
  553.     END IF
  554.  
  555.     '*
  556.     '* Seriennummer patchen **********************************************
  557.     '* 
  558.  
  559.     bOk% = GetInstallFlags(OPT_PATCH,VTYPE_INT,NULL)
  560.     IF bOk%=TRUE AND bExec%=TRUE THEN
  561.         IF nUpdate% = VER_UPDATE THEN
  562.             szExecName$=STRING$(96,32)
  563.  
  564.             bOk% = GetInstallFlags(OPT_APPEXEC,VTYPE_STR,szExecName$)
  565.             IF LEN(szExecName) > 0 THEN
  566.                 bOk% = GetAppUserInfo(szExecDir$,szExecName$,szUserName$,szCompany$,szSerial$)
  567.                 bOk% = PatchFilesEx(szExecDir$,szUserName$,szCompany$,szSerial$)
  568.             END IF
  569.         ELSE
  570.             bOk% = PatchFilesEx(szExecDir$,szUserName$,szCompany$,NULL)
  571.         END IF
  572.  
  573.         IF bOk% THEN
  574.             WriteToLogFile "  Kein Fehler beim serialisieren des PC-Kaufmanns aufgetreten."
  575.         ELSE
  576.             i% = DoMsgBox("Es ist ein Fehler beim Eintragen der Seriennummer aufgetreten!",KHKMSG,OKMSG)
  577.             WriteToLogFile "  Fehler beim serialisieren des PC-Kaufmanns aufgetreten"
  578.         END IF
  579.     ELSE
  580.         bOk% = TRUE
  581.     END IF
  582.  
  583.     CloseLogFile
  584.     Install = bOk%
  585. END FUNCTION
  586.  
  587. '*============================================================================
  588. '* Funktion :    GetCompany
  589. '*============================================================================
  590. '* Aufgabe  :   Anwendername und Firma ermitteln
  591. '*----------------------------------------------------------------------------
  592. '* Parameter:    szUserName$    Anwendername
  593. '*        szCompany$    Firmenname
  594. '*----------------------------------------------------------------------------
  595. '* Return   :    BOOL        TRUE/FALSE
  596. '*==========================================================================*/
  597.  
  598. FUNCTION GetCompany(szUserName$,szCompany$,szSerial$) STATIC AS INTEGER
  599.     SetSymbolValue "EditUser", szUserName$
  600.     SetSymbolValue "EditCompany", szCompany$
  601.     SetSymbolValue "EditFocus", "END"
  602.  
  603.     sz$ = UIStartDlg(CUIDLL$,IDD_COMPANY,"CompanyDlgProc",0,"")
  604.     UIPop 1
  605.     szUserName$ = GetSymbolValue("EditUser")
  606.     szCompany$ = GetSymbolValue("EditCompany")
  607.  
  608.     IF sz$ = "CONTINUE" THEN
  609.         GetCompany = TRUE
  610.     ELSE
  611.         GetCompany = FALSE
  612.     END IF
  613. END FUNCTION
  614.  
  615. '*============================================================================
  616. '* Funktion :    TestPath
  617. '*============================================================================
  618. '* Aufgabe  :   Test ob ein Pfadname gültig ist.
  619. '*----------------------------------------------------------------------------
  620. '* Parameter:    szDir$        Verzeichnispfad
  621. '*        MinSpace&    Größe
  622. '*----------------------------------------------------------------------------
  623. '* Return   :    INTEGER        TRUE/FALSE
  624. '*==========================================================================*/
  625.  
  626. FUNCTION TestPath(szDir$) STATIC AS INTEGER
  627.     TestPath=FALSE
  628.     bOk%=FALSE
  629.  
  630.     IF MID$(szDir$,2,1)=":" THEN
  631.         szDrive$=MID$(szExecDir$,1,1)
  632.     ELSE
  633.         szDrive$="C"
  634.     END IF
  635.  
  636.     szDir$ = UCASE$(szDir$)
  637.     FOR i% = 1 TO LEN(szDir$) STEP 1
  638.         Char$ = Mid$(szDir$,i%,1)
  639.         IF ASC(Char$) > 127 OR ASC(Char$) = 45 THEN
  640.             bOk% = TRUE
  641.             sz$ = UIStartDlg(CUIDLL$,IDD_BADPATH,"InfoDlgProc",0,"")
  642.  
  643.             UIPop 1
  644.             EXIT FOR
  645.         END IF
  646.     NEXT i%
  647.  
  648.     IF bOk% THEN
  649.         EXIT FUNCTION
  650.     END IF
  651.  
  652.     IF FValidFATDir(szDir$) = 0 THEN
  653.         sz$ = UIStartDlg(CUIDLL$,IDD_BADPATH,"InfoDlgProc",0,"")
  654.  
  655.         UIPop 1
  656.         EXIT FUNCTION
  657.     END IF    
  658.  
  659.     IF IsDirWritable(szDir$) = 0 OR LEN(szDir$)=3 AND MID$(szDir$,2,1)=":" THEN
  660.         '*
  661.         '* Schreibfehler melden, wenn Verzeichnis nicht beschreibar ist
  662.         '*
  663.         sz$ = UIStartDlg(CUIDLL$,IDD_BADPATH2,"InfoDlgProc",0,"")
  664.  
  665.         UIPop 1
  666.         EXIT FUNCTION
  667.     END IF
  668.     TestPath=TRUE
  669. END FUNCTION
  670.  
  671. '*============================================================================
  672. '* Funktion :    MakePath
  673. '*============================================================================
  674. '* Aufgabe  :   Anfügen eines Dateinamen an einen Pfad
  675. '*----------------------------------------------------------------------------
  676. '* Parameter:    szDir$        Verzeichnispfad
  677. '*        szFile$        Dateinamen, der Angefügt werden soll
  678. '*----------------------------------------------------------------------------
  679. '* Return   :    STRING        Komplette Pfadnamen
  680. '*==========================================================================*/
  681.  
  682. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  683.     IF szDir$ = "" THEN
  684.         MakePath = szFile$
  685.     ELSEIF szFile$ = "" THEN
  686.         MakePath = szDir$
  687.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  688.         MakePath = szDir$ + szFile$
  689.     ELSE
  690.         MakePath = szDir$ + "\" + szFile$
  691.     END IF
  692. END FUNCTION
  693.  
  694. '*============================================================================
  695. '* Funktion :    WriteSystemInfo
  696. '*============================================================================
  697. '* Aufgabe  :   Diverse Angaben über das System ins Logfile schreiben
  698. '*----------------------------------------------------------------------------
  699. '* Parameter:    Keine
  700. '*----------------------------------------------------------------------------
  701. '* Return   :    Keine
  702. '*==========================================================================*/
  703.  
  704. SUB WriteSystemInfo STATIC
  705.     bNetLocal% = FALSE
  706.  
  707.     WinMajorVersion% = GetWindowsMajorVersion()
  708.     WinMinorVersion% = GetWindowsMinorVersion()
  709.  
  710.     DosMajorVersion% = GetDosMajorVersion()
  711.     DosMinorVersion% = GetDosMinorVersion()
  712.  
  713.     WriteToLogFile ""
  714.     WriteToLogFile "  Windowsversion              : " + LTRIM$(STR$(WinMajorVersion%)) + "." + LTRIM$(STR$(WinMinorVersion%))
  715.     WriteToLogFile "  Dosversion                  : " + LTRIM$(STR$(DosMajorVersion%)) + "." + LTRIM$(STR$(DosMinorVersion%))
  716.     WriteToLogFile ""
  717.     '* WriteToLogFile "  Dospfad                  : " + GetEnvValue("path")
  718.  
  719.     WindowsMode% = GetWindowsMode()
  720.     IF WindowsMode% = 0 THEN
  721.         szMode$ = "Realmode"
  722.     ELSEIF WindowsMode% = 1 THEN
  723.         szMode$ = "Standardmode"
  724.     ELSEIF WindowsMode% = 2 THEN
  725.         szMode$ = "Enhancedmode"
  726.     ELSE
  727.         szMode$="unbekannt"
  728.     END IF
  729.     WriteToLogFile "  Windowsmode                      : " + szMode$
  730.  
  731.     IF IsWindowsShared() THEN
  732.         szMode$="Shared"
  733.     ELSE
  734.         szMode$="non Shared"
  735.     END IF
  736.     WriteToLogFile "  Windows ist " + szMode$
  737.  
  738.     CpuType%=GetProcessorType()
  739.     IF CpuType% = 0 THEN 
  740.         szCpu$ = "8086"
  741.     ELSEIF CpuType% = 1 THEN
  742.         szCpu$ = "80186"
  743.     ELSEIF CpuType% = 2 THEN
  744.         szCpu$ = "80286"
  745.     ELSEIF CpuType% = 3 THEN
  746.         szCpu$ = "80386"
  747.     ELSEIF CpuType% = 4 THEN
  748.         szCpu$ = "80486"
  749.     ELSE
  750.         szCpu$ = "unbekannt"
  751.     END IF
  752.     WriteToLogFile "  Rechnertype                  : " + szCpu$
  753.  
  754.     Height% = GetScreenHeight()
  755.     Width%  = GetScreenWidth()
  756.     WriteToLogFile "  Auflösung                  : " + LTRIM$(STR$(Width%)) + "x" + LTRIM$(STR$(Height%))
  757.  
  758.     Display% = HasMonochromeDisplay()
  759.     IF Display% = 1 THEN
  760.         szDisplay$ = "Monochromedisplay"
  761.     ELSE
  762.         szDisplay$ = "Farbdisplay"
  763.     END IF
  764.     WriteToLogFile "  Anzeige                  : " + szDisplay$
  765.  
  766.     Memory& = GetFreeSpace(0) / 1024
  767.     WriteToLogFile "  verfügbarer Speicher in KB          : " + LTRIM$(STR$(Memory&))
  768.                                   
  769.     WriteToLogFile ""
  770.     WriteToLogFile "  Anwender wählte folgenden PRG-Pfad  : '" + szExecDir$ + "'"
  771.  
  772.     bNetLocal% = IsDriveNetwork(MID$(szExecDir$,1,1))
  773.     IF bNetLocal% = TRUE THEN
  774.         szDriveType$ = "Netzwerklaufwerk"
  775.     ELSE
  776.         szDriveType$ = "lokales Laufwerk"
  777.     END IF
  778.  
  779.     WriteToLogFile "  Das PRG-Laufwerk ist ein            :" + szDriveType$
  780.     Memory& = GetFreeSpaceForDrive(MID$(szExecDir$,1,1)) / 1024
  781.     WriteToLogFile "  Verfügbarer Speicher auf dem PRG-LW : " + LTRIM$(STR$(Memory&)) + "KB"
  782.  
  783.     WriteToLogFile "  Anwender wählte folgenden DAT-Pfad  : '" + szDataDir$ + "'"
  784.     bNetLocal% = IsDriveNetwork(MID$(szDataDir$,1,1))
  785.     IF bNetLocal% = TRUE THEN
  786.         szDriveType$ = "Netzwerklaufwerk"
  787.     ELSE
  788.         szDriveType$ = "lokales Laufwerk"
  789.     END IF
  790.  
  791.     WriteToLogFile "  Das DAT-Laufwerk ist ein            :" + szDriveType$
  792.     Memory& = GetFreeSpaceForDrive(MID$(szDataDir$,1,1)) / 1024
  793.     WriteToLogFile "  Verfügbarer Speicher auf dem DAT-LW : " + LTRIM$(STR$(Memory&)) + "KB"
  794.  
  795.         WriteToLogFile ""
  796.     WriteToLogFile "  Das Verzeichnis wurde angelegt      : " + szExecDir$
  797.     WriteToLogFile "  Das Datenverzeichnis wurde angelegt : " + szDataDir$
  798.     WriteToLogFile "  Das Tempverzeichnis wurde angelegt  : " + szDaraDir$+"\TEMP"
  799.     WriteToLogFile "  Das Stammverzeichnis wurde angelegt : " + szDataDir$+"\STAMM"
  800.     WriteToLogFile "  Windows befindet sich in            : " + szWindDir$
  801.  
  802.     szVersion$=STRING$(96,32)
  803.     szAppName$=STRING$(96,32)
  804.     bOk%=GetVersionInfo(szVersion$,szAppName$)
  805.  
  806.     WriteToLogFile "  Die Installierte Programmversion ist:    " + szAppName$ + " " + szVersion$
  807.     WriteToLogFile "  User/State                          : " + STR$(nUser%) + " / " + STR$(nUpdate%)
  808.     WriteToLogFile ""
  809. END SUB
  810.