home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 March / VPR9703B.ISO / driver / canon / shot / 95pb100 / disk2 / pbuddy.ms_ / pbuddy.ms
Text File  |  1995-12-19  |  55KB  |  1,649 lines

  1. '********************************************************************
  2. '*                Print Buddy セットアップ
  3. '********************************************************************
  4. ''$DEFINE DEBUG  ''Define for script development/debugging
  5. '$INCLUDE 'setupapi.inc'
  6. '$INCLUDE 'msdetect.inc'
  7. '$INCLUDE 'dialog.inc'
  8.  
  9. DECLARE SUB AddOptFilesToCopyList (ftype%)
  10. DECLARE SUB RecalcOptFiles (ftype%)
  11. DECLARE SUB RecalcPath
  12. DECLARE SUB SetDriveStatus
  13. DECLARE SUB RebootSystem
  14. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  15. DECLARE FUNCTION MakePath2 (szDir$, szFile$) AS STRING
  16. DECLARE FUNCTION MakePath3 (szDir$) AS STRING
  17. DECLARE FUNCTION BitmapCntrlInit LIB "pbinst.dll" as INTEGER
  18. DECLARE FUNCTION SendMessage    LIB "USER"    (arg1%, arg2%, arg3%, arg4&) AS LONG
  19. DECLARE FUNCTION ExitWindowsExec LIB "USER"  (arg1$, arg2$)    as INTEGER
  20. DECLARE FUNCTION FRegisterControl LIB "pbinst.dll" as INTEGER
  21. DECLARE FUNCTION FGetPrivateProfileString LIB "pbinst.dll" (arg1$, arg2$) as INTEGER
  22. DECLARE FUNCTION BitmapInitialize LIB "pbinst.dll" as INTEGER
  23. DECLARE FUNCTION DrvCheck LIB "drvcheck.dll" as INTEGER
  24.  
  25. '*************************************************************************
  26. '** 目的:                                                                  **
  27. '**     インストーラの初期化                                               **
  28. '*************************************************************************
  29. INIT:
  30.     ''インストーラの最大化
  31.     hPrevCur% = ShowWaitCursor()    ''カーソルを砂時計にする
  32.     HFRAME% = HwndFrame()
  33.     l& = SendMessage(HFRAME%, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
  34.  
  35.     CUIDLL$ = "pbinst.dll"                                            ''ユーザインターフェース用DLL
  36.     HELPPROC$ = "FHelpDlgProc"                                          ''ヘルプダイアログ用プロシージャ
  37.     SetBitmap CUIDLL$, LOGO                                              ''Print Buddy のロゴを表示
  38.     SetTitle "Print Buddy インストーラ"                                ''インストーラのタイトル For Lite
  39.  
  40.     ''シンボルデータの取得
  41.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  42.     IF szInf$ = "" THEN
  43.         szInf$ = GetSymbolValue("STF_CWDDIR") + "PBINST.INF"
  44.     END IF
  45.     ReadInfFile szInf$
  46.  
  47.     ''SETUP.EXEの起動元を判定
  48.     IF IsDriveRemovable(GetSymbolValue("STF_SRCDIR")) = 1 THEN
  49.         FLOPY$ = "YES"
  50.         SetSymbolValue "FromFlopy","YES"
  51.         ''INIファイルの設定値の取得 
  52.         ISINIFILE$ = "YES"
  53.         sz$ = UIStartDlg(CUIDLL$, SEARCH_DRV, "FPassProc", 0, "")        ''ドライブ検索中ダイアログボックスを表示
  54.         szLocalDrives$ = "LOCAL"                                        ''シンボル名をLOCALとする
  55.         GetLocalHardDrivesList szLocalDrives$                            ''すべてのドライブをszLocalDrivesにリストする
  56.         n% = GetListLength(szLocalDrives$)                                ''szLocalDrivesシンボルリストの個数を取得
  57.         TEMP$ = ""
  58.         FOR i% = 1 TO n% STEP 1                                            ''ドライブ数分ループ
  59.             Drive$ = GetListItem(szLocalDrives$, i%)                        ''ドライブ名取得
  60.             Drive$ = Drive$ + ":\"                                            ''正式なドライブ名を作成
  61.             INIFILE$ = FindFileInTree("PBUDDY.INI", Drive$)                    ''指定したドライブにPBUDDY.INIファイルが存在するか検索
  62.             IF INIFILE$ <> "" THEN
  63.                 TEMP$ = INIFILE$
  64.             END IF
  65.         NEXT
  66.         INIFILE$ = TEMP$
  67.         UIPop 1
  68.  
  69.         ''PBUDDY.INIファイルがなければフロッピーディスクのPBUDDY.INIファイルを指定する
  70.         IF INIFILE$ = "" THEN
  71.             ISINIFILE$ = "NO"
  72.             INIFILE$ = GetSymbolValue("STF_SRCDIR") + "PBUDDY.INI"
  73.         END IF
  74.     ELSE
  75.         FLOPY$ = "NO"
  76.         ISINIFILE$ = "YES"
  77.         FILEDIR$ = GetSymbolValue("STF_SRCDIR")
  78.         INIFILE$ = MID$(FILEDIR$, 1, LEN(FILEDIR$) - 9) + "PBUDDY.INI"
  79.     END IF
  80.  
  81.     ''カーソルを矢印にする
  82.     RestoreCursor hPrevCur%
  83.  
  84.     ''ディレクトリを作成
  85.     PBUDDYDIR$ = GetIniKeyString(INIFILE$, "PRINTBUDDY", "PBUDDYDIR")            
  86.     PBUDDYWINDIR$ = GetIniKeyString(INIFILE$, "PRINTBUDDY", "PBUDDYWINDIR")
  87.     PBUDDYDIRSETUP$ = MakePath(PBUDDYDIR$, "WINSETUP")
  88.     DEST$ = PBUDDYDIR$
  89.     OPTCUR$ = "1"
  90.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)        ''Windowsのドライブを取得
  91.     WINSYSDIR$ = GetWindowsSysDir()        ''Windowsのシステムディレクトリを取得
  92.     WINDIR$ = GetWindowsDir()    ''Windowsのディレクトリを取得
  93.     WININIFILE$ = WINDIR$ + "WIN.INI"
  94.  
  95.     ''インストール用シンボルリスト作成
  96.     CHECKSTATES$ = "CheckItemsState"
  97.     DRIVETEXT$   = "DriveStatusText"
  98.     FOR i% = 1 TO 8 STEP 1
  99.         AddListItem CHECKSTATES$, "ON"
  100.     NEXT i%
  101.     IF ISINIFILE$ = "YES" THEN
  102.         ''ReplaceListItem CHECKSTATES$, 4, "OFF"        ''INIFILES = 4
  103.         IF GetIniKeyString(INIFILE$, "FILE", "INSTALL") = "1" THEN
  104.             AddListItem CHECKSTATES$, "OFF"            ''DINIFILES = 9
  105.             ReplaceListItem CHECKSTATES$, 8, "OFF"    ''SETUP = 8
  106.         ELSE
  107.             AddListItem CHECKSTATES$, "ON"            ''DINIFILES = 9
  108.         END IF
  109.     ELSE
  110.        AddListItem CHECKSTATES$, "ON"                ''DINIFILES = 9
  111.     END IF
  112.     AddListItem CHECKSTATES$, "OFF"                    ''CHECKID = 10
  113.     AddListItem CHECKSTATES$, "ON"                    ''CJLMON = 11
  114.     AddListItem CHECKSTATES$, "ON"                    ''STATUS = 12
  115.     AddListItem CHECKSTATES$, "ON"                    ''RCPDLL = 13
  116.     AddListItem CHECKSTATES$, "ON"                    ''RCPRES = 14
  117.     AddListItem CHECKSTATES$, "ON"                    ''STSRES = 15
  118.     ''CTL3DV2.DLLが存在するときはインストールしない
  119.     IF DoesFileExist(WINSYSDIR$ + "ctl3dv2.dll", cmoNone) = 1 THEN 
  120.         ReplaceListItem CHECKSTATES$, 7, "OFF"
  121.     END IF
  122.  
  123.     FOR i% = 1 TO 7 STEP 1
  124.         AddListItem DRIVETEXT$, ""
  125.     NEXT i%
  126.     ReplaceListItem DRIVETEXT$, 7, DEST$
  127.  
  128.     ''ディスク内容シンボルリスト作成
  129.     INIFILESNEEDS$ = "IniFileNeeds"
  130.     DINIFILESNEEDS$ = "DIniFileNeeds"
  131.     MONITORNEEDS$ = "MonitorNeeds"
  132.     REMOTEPANELNEEDS$ = "RemotePanelNeeds"
  133.     CTLNEEDS$ = "CtlNeeds"
  134.     SETUPNEEDS$ = "SetupNeeds"
  135.     CJLMONNEEDS$ = "CjlMonNeeds"
  136.     STATUSNEEDS$ = "StatusNeeds"
  137.     RCPDLLNEEDS$ = "RcrDllNeeds"
  138.     RCPRESNEEDS$ = "RcrResNeeds"
  139.     STSRESNEEDS$ = "StsResNeeds"
  140.  
  141.     EXTRACOSTS$ = "ExtraCosts"
  142.     BIGLIST$    = "BigList"
  143.     LOCATION$   = "Location"
  144.     SetSymbolValue "Location", "LOCAL"
  145.     SELECTID$ = "SelectID"    
  146.  
  147.     ''ディスク容量チェック用シンボルリスト作成
  148.     FOR i% = 1 TO 10 STEP 1
  149.         AddListItem BIGLIST$, ""
  150.     NEXT i%
  151.     FOR i% = 1 TO 26 STEP 1
  152.         AddListItem EXTRACOSTS$, "0"
  153.     NEXT i%
  154.  
  155. '    ''プリンタドライバシンボルリスト
  156. '    PRINTERDRV$ = "ListItemsIn"
  157. '    PNTDRVNAME$ = "PntDrvName"
  158. '    PRINTERPORT$ = "PrinterPort"
  159. '    PORTLISTIN$ = "PortListItemsIn"
  160. '    PORTLISTOUT$ = "PortListItemsOut"
  161.  
  162. '    AddListItem PRINTERDRV$, "Canon LBP-730 LIPS4"
  163.  
  164.     INSTABLEPRN$ = "InstablePrn"
  165.     SELECTPRNINDEX$ = "SelectPrnIndex"
  166.     FORINIPRNNAME$ = "ForIniPrnName"
  167.  
  168.     AddListItem INSTABLEPRN$, "Canon LBP-730 LIPS4"
  169.     AddListItem INSTABLEPRN$, "Canon LBP-720 LIPS4"
  170.     AddListItem INSTABLEPRN$, "Canon LBP-450 LIPS4"
  171.  
  172.     AddListItem FORINIPRNNAME$, "LBP-730"
  173.     AddListItem FORINIPRNNAME$, "LBP-720"
  174.     AddListItem FORINIPRNNAME$, "LBP-450"
  175.  
  176. '    AddListItem PNTDRVNAME$, "LIPS4"
  177. '    AddListItem PRINTERPORT$, "LPT1"
  178.  
  179.     ''プリンタポートシンボルリスト作成
  180. '    i% = FGetPrivateProfileString(WININIFILE$, "Ports")
  181. '    n% = GetListLength("KeyListOut")
  182. '    FOR i% = 1 TO n% STEP 1
  183. '        AddListItem PORTLISTIN$, GetListItem("KeyListOut", i%)
  184. '    NEXT i%
  185.  
  186. '*************************************************************************
  187. '** 目的:                                                                  **
  188. '**     ようこそ                                                         **
  189. '*************************************************************************
  190. WELCOME:
  191.     sz$ = UIStartDlg(CUIDLL$, WELCOME1, "FInfoDlgProc", 0, "")        ''「ようこそ」ダイアログボックスを表示
  192.     IF sz$ = "CONTINUE" THEN        ''「継続」ならダイアログボックスを閉じて次の処理へ
  193.         UIPop 1
  194.     ELSEIF sz$ = "REACTIVATE" THEN
  195.         GOTO WELCOME
  196.     ELSE                            ''「終了」なら「ASKQUIT_1」へ
  197.         GOSUB ASKQUIT_3
  198.         GOTO WELCOME                ''「ASKQUIT_3」で「継続」が選択され、ここに戻ってきた場合には、「ようこそ」を繰り返す
  199.     END IF
  200.  
  201. '*************************************************************************
  202. '** 目的:                                                                **
  203. '**        プリンタの機種選択                                                **
  204. '*************************************************************************
  205.  
  206. IF ISINIFILE$ = "YES" THEN
  207.     IF DoesDirExist(MakePath(PBUDDYDIR$, "WINSETUP")) = 1 THEN
  208.         IF FLOPY$ = "YES" THEN
  209.             GOTO SELECTIONPRINTER
  210.         ELSE
  211.             GOTO COMPUTER
  212.         ENDIF
  213.     ELSE
  214.         IF FLOPY$ = "YES" THEN
  215.             GOTO SELECTIONPRINTER
  216.         ELSE
  217.             i% = DoMsgBox("Print Buddyのインストールは、フロッピーディスクから行ってください。", "インストールの中止", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  218.             UIPopAll
  219.             END
  220.         ENDIF
  221.     ENDIF
  222. ELSE
  223.     GOTO SELECTIONPRINTER
  224. ENDIF
  225.  
  226. SELECTIONPRINTER:
  227.  
  228.     sz$ = UIStartDlg(CUIDLL$, SELECT_PRINTER, "FPrnDlgProc", 0, "")        ''「プリンタ機種選択」ダイアログボックスを表示
  229.     IF sz$ = "CONTINUE" THEN        ''「継続」ならダイアログボックスを閉じて次の処理へ
  230.         '選ばれたプリンタの名前を保存しておく
  231.         PRINTERDRV$ = GetSymbolValue("ListItemsIn")
  232.  
  233.         '選ばれたプリンタのインデックスを保存しておく。
  234.         SELECTPRNINDEX$ = GetSymbolValue("SelectPrnIndex")
  235.  
  236.         'シンボルInstablePrnの消去する
  237.         RemoveSymbol("InstablePrn")
  238.  
  239.         'ダイアログを消す
  240.         UIPop 1
  241.     ELSEIF sz$ = "REACTIVATE" THEN
  242.         GOTO SELECTIONPRINTER
  243.     ELSE                            ''「終了」なら「ASKQUIT_1」へ
  244.         GOSUB ASKQUIT_3
  245.         GOTO SELECTIONPRINTER                ''「ASKQUIT_3」で「継続」が選択され、ここに戻ってきた場合には、「プリンタ機種選択」を繰り返す
  246.     END IF
  247.  
  248. '*************************************************************************
  249. '** 目的:                                                                  **
  250. '**     コンピュータの機種選択                                              **
  251. '*************************************************************************
  252. COMPUTER:
  253.     SetSymbolValue "RadioDefault","DOSV"
  254.     SetSymbolValue "ComputerOut", "DOSV"
  255.     COMP_LOOP:
  256.     sz$ = UIStartDlg(CUIDLL$, WHAT_COMP, "FCompDlgProc", 0, "")
  257.     COMPUTER$ = GetSymbolValue("ComputerOut")
  258.     IF COMPUTER$ = "NEC" THEN
  259.          DEST$ = "A:\PBUDDY95"
  260.          ReplaceListItem CHECKSTATES$, 2, "OFF"
  261.     ELSEIF COMPUTER$ = "DOSV" THEN
  262.          DEST$ = "C:\PBUDDY95"
  263.          ReplaceListItem CHECKSTATES$, 1, "OFF"
  264.     END IF
  265.  
  266.     ''ボタン処理
  267.     IF sz$ = "CONTINUE" THEN
  268.         UIPop 1
  269.         RemoveSymbol "RadioDefault"
  270.         RemoveSymbol "ComputerOut"
  271.     ELSEIF sz$ = "REACTIVATE" THEN
  272.         GOTO COMP_LOOP
  273.     ELSE
  274.         GOSUB ASKQUIT_3
  275.         GOTO COMP_LOOP
  276.     END IF
  277.  
  278. '*************************************************************************
  279. '** 目的:                                                                  **
  280. '**     インストーラのメニュー                                              **
  281. '*************************************************************************
  282. MENU:
  283.     IF ISINIFILE$ = "YES" THEN
  284.         IF DoesDirExist(MakePath(PBUDDYDIR$, "WINSETUP")) = 1 THEN
  285.             IF FLOPY$ = "YES"  THEN
  286.                 SetSymbolValue "IsIniFile","NO"        ''""
  287.             ELSEIF FLOPY$ = "NO" THEN
  288.                 SetSymbolValue "IsIniFile","YES"      
  289.             END IF        
  290.         ELSE
  291.             SetSymbolValue "IsIniFile","NO"
  292.         END IF
  293.     ELSE
  294.         SetSymbolValue "IsIniFile","NO"    
  295.     END IF
  296.  
  297.     sz$ = UIStartDlg(CUIDLL$, INST_MENU, "FInstMenuDlgProc", 0, "")    ''「メニュー」ダイアログボックスを表示    
  298.     IF sz$ = "STANDARD" THEN        ''「標準インストール」ならダイアログボックスを閉じて「STANDARD」へ
  299.         UIPop 1
  300.         RemoveSymbol "IsIniFile"
  301.         GOTO STANDARD
  302.     ELSEIF sz$ = "CUSTOM" THEN        ''「カスタムインストール」ならダイアログボックスを閉じて「CUSTOM」へ
  303.         UIPop 1
  304.         RemoveSymbol "IsIniFile"
  305.         GOTO CUSTOM
  306.     ELSEIF sz$ = "MAINTENANCE" THEN        ''「追加/削除」ならダイアログボックスを閉じて「MAINTENANCE」へ
  307.         UIPop 1
  308.         RemoveSymbol "IsIniFile"
  309.         GOSUB MAINTENANCE
  310.         GOTO MENU                    ''「MENU」の繰り返し
  311.     ELSEIF sz$ = "DELETE" THEN        ''「デインストール」ならダイアログボックスを閉じて「DELETE」へ
  312.         UIPop 1
  313.         RemoveSymbol "IsIniFile"
  314.         GOSUB DELETE
  315.         GOTO MENU                ''
  316.     ELSEIF sz$ = "REACTIVATE" THEN
  317.         RemoveSymbol "IsIniFile"
  318.         GOTO MENU
  319.     ELSE                            ''「その他」ならダイアログボックスを閉じて「ASKQUIT_1」へ
  320.         GOSUB ASKQUIT_3
  321.         GOTO MENU                    ''「MENU」の繰り返し
  322.     END IF                            
  323.     UIPop 1
  324. END
  325.  
  326. '*************************************************************************
  327. '** 目的:                                                                  **
  328. '**     標準インストール                                                 **
  329. '*************************************************************************
  330. STANDARD:
  331.     ''インストール先のディレクトリを決定
  332.     GOSUB INSTALLPATH
  333.     PBUDDYDIR$ = DEST$
  334.     PBUDDYWINDIR$ = MakePath(DEST$, "WIN")
  335.     PBUDDYDOSDIR$ = MakePath(DEST$, "DOS")
  336.     PBUDDYDIRSETUP$ = MakePath(PBUDDYDIR$, "WINSETUP")
  337.     OLDINIFILE$ = INIFILE$
  338.     INIFILE$ = MakePath(PBUDDYDIR$, "PBUDDY.INI")
  339.  
  340.     IF sz$ = "CONTINUE" THEN        ''「継続」ならダイアログボックスを閉じて次の処理へ
  341.         UIPop 1
  342.     ELSEIF sz$ = "REACTIVATE" THEN
  343.         GOTO STANDARD
  344.     ELSE                            ''「終了」なら「ASKQUIT_1」へ
  345.         GOSUB ASKQUIT_1
  346.         GOTO STANDARD                ''「STANDARD」の繰り返し
  347.     END IF
  348.  
  349.     ''メモリ計算
  350.     RecalcPath        
  351.     FOR i% = 1 TO 7 STEP 1
  352.         IF GetListItem(BIGLIST$, i%) <> "" THEN
  353.             GOSUB TOOBIG
  354.             GOTO STANDARD
  355.         END IF
  356.     NEXT i%
  357.  
  358.     ''オプション機器設定の確認
  359.     OPTIONKIKI:
  360.     sz$ = UIStartDlg(CUIDLL$, OPTION, "FInfoDlgProc", 0, "")        ''「オプション機器設定」ダイアログボックスを表示
  361.     IF sz$ = "CONTINUE" THEN
  362.         UIPop 1
  363.         INIFILE$ = OLDINIFILE$ 
  364.         GOSUB MAINTENANCE
  365.         INIFILE$ = MakePath(PBUDDYDIR$, "PBUDDY.INI")
  366.         IF RET$ = "CANCEL" THEN
  367.             RET$ = ""
  368.             GOTO OPTIONKIKI
  369.         END IF
  370.         GOTO JUMP_STD
  371.     ELSEIF sz$ = "BACK" THEN
  372.         UIPop 1        
  373.     ELSE            ''「終了」なら「ASKQUIT_1」へ
  374.         GOSUB ASKQUIT_1
  375.         GOTO OPTIONKIKI
  376.     END IF                    ''ダイアログボックスを閉じる
  377.  
  378.     ''プリンタのロケーションを聞く
  379. '    PRINTER:
  380. '    SetSymbolValue "RadioDefault", "LOCAL"
  381. '    LOC_LOOP:
  382. '   sz$ = UIStartDlg(CUIDLL$, WHERE_PRINTER, "FLocationDlgProc", 0, "")        ''「プリンタの設置場所の選択」ダイアログボックスを表示
  383. '    PRINTER$ = GetSymbolValue("Location")
  384.  
  385. '    IF sz$ = "CONTINUE" THEN
  386. '        UIPop 1
  387. '        RemoveSymbol "RadioDefault"
  388. '   ELSEIF sz$ = "REACTIVATE" THEN
  389. '        GOTO LOC_LOOP
  390. '    ELSE            ''「終了」なら「ASKQUIT_1」へ
  391. '        RemoveSymbol "RadioDefault"
  392. '        GOSUB ASKQUIT_1
  393. '        GOTO LOC_LOOP
  394. '    END IF
  395.  
  396. '    ''コンピュータがNECの場合、プリンタの接続の確認ダイアログを表示させる
  397.     JUMP_STD:
  398. '    IF COMPUTER$ = "NEC" THEN
  399. '        GOSUB CONECTPRINTER
  400. '    END IF
  401.  
  402.     ''標準インストールの開始
  403.     GOSUB STANDARD_INSTALL
  404.     
  405.     ''Windowsをリブートするか確認する
  406.     GOSUB REBOOT
  407. END
  408.                 
  409. '*************************************************************************
  410. '** 目的:                                                                  **
  411. '**     カスタムインストール                                               **
  412. '*************************************************************************
  413. CUSTOM:
  414.     RecalcPath            
  415.     SetDriveStatus        
  416.  
  417.     ''インストール先のディレクトリを決定
  418.     SetSymbolValue "SetupDirOut", DEST$
  419.     PRINTER$ = GetSymbolValue("Location")
  420.     PBUDDYDIR$ = DEST$
  421.     PBUDDYWINDIR$ = MakePath(DEST$, "WIN")
  422.     PBUDDYDOSDIR$ = MakePath(DEST$, "DOS")
  423.     PBUDDYDIRSETUP$ = MakePath(PBUDDYDIR$, "WINSETUP")
  424.     INIFILE$ = MakePath(PBUDDYDIR$, "PBUDDY.INI")
  425.  
  426.     CUSTOM_LOOP:
  427.     sz$ = UIStartDlg(CUIDLL$, CUSTOM, "FCustomDlgProc", 0, "")
  428.     IF sz$ = "CONTINUE" THEN
  429.         IF IsDirWritable(DEST$) = 0 THEN
  430.             GOSUB BADPATH
  431.             GOTO CUSTOM_LOOP
  432.         END IF
  433.  
  434.             RecalcPath
  435.         FOR i% = 1 TO 7 STEP 1
  436.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  437.                 GOSUB TOOBIG
  438.                 GOTO CUSTOM_LOOP
  439.             END IF
  440.         NEXT i%
  441.         RemoveSymbol "SetupDirOut"
  442.         UIPop 1
  443.     ELSEIF sz$ = "REACTIVATE" THEN
  444.         GOTO CUSTOM_LOOP
  445.     ELSEIF sz$ = "REMOTE" THEN
  446.         RecalcOptFiles REMOTEPANEL
  447.         SetDriveStatus
  448.         GOTO CUSTOM_LOOP
  449.     ELSEIF sz$ = "STATUS" THEN
  450.         RecalcOptFiles MONITOR
  451.         SetDriveStatus
  452.         GOTO CUSTOM_LOOP
  453. '    ELSEIF sz$ = "DRIVER" THEN
  454. '        RecalcOptFiles DRIVER
  455. '        SetDriveStatus
  456. '        GOTO CUSTOM_LOOP
  457.     ELSEIF sz$ = "GETDIR" THEN
  458.         OLDEST$ = DEST$
  459.         GOSUB INSTALLPATH
  460.         IF DEST$ <> OLDEST$ THEN
  461.             IF LEN(DEST$) > 32 THEN
  462.                 GOSUB CUTPATH
  463.                 SetSymbolValue "SetupDirOut", CUTPATH$
  464.             ELSE
  465.                 SetSymbolValue "SetupDirOut", DEST$
  466.             END IF
  467.             PRINTER$ = GetSymbolValue("Location")
  468.             PBUDDYDIR$ = DEST$
  469.             PBUDDYWINDIR$ = MakePath(DEST$, "WIN")
  470.             PBUDDYDOSDIR$ = MakePath(DEST$, "DOS")
  471.             PBUDDYDIRSETUP$ = MakePath(PBUDDYDIR$, "WINSETUP")
  472.             INIFILE$ = MakePath(PBUDDYDIR$, "PBUDDY.INI")
  473.             RecalcPath            
  474.             SetDriveStatus        
  475.         END IF
  476.         GOTO CUSTOM_LOOP
  477.     ELSEIF sz$ = "IDCANCEL" THEN
  478.         GOTO CUSTOM_LOOP
  479.     ELSE
  480.         GOSUB ASKQUIT_1
  481.         GOTO CUSTOM_LOOP
  482.     END IF
  483.     
  484. '    ''コンピュータがNECの場合、プリンタの接続の確認ダイアログを表示させる
  485. '    IF COMPUTER$ = "NEC" THEN
  486. '        GOSUB CONECTPRINTER
  487. '    END IF
  488.  
  489.     ''カスタムインストールの開始
  490.     CST$ = "1"
  491.     GOSUB CUSTOM_INSTALL
  492. END
  493.  
  494. '*************************************************************************
  495. '** 目的:                                                                  **
  496. '**     バスの短縮                                                         **
  497. '*************************************************************************
  498. CUTPATH:
  499.     FOR i% = 0 TO 25 STEP 1
  500.         IF MID$(DEST$, LEN(DEST$)-i%, 1) = "\" THEN
  501.             n% = i%
  502.         END IF
  503.     NEXT i%
  504.     CUTPATH$ = MID$(DEST$, 1, 1) + "\..." + MID$(DEST$, LEN(DEST$)-n%, n%+1)
  505. RETURN
  506.  
  507. '*************************************************************************
  508. '** 目的:                                                                  **
  509. '**     メンテナンス                                                       **
  510. '*************************************************************************
  511. MAINTENANCE:
  512.     ''フロッピーディスクからの起動の場合
  513.     IF FLOPY$ = "YES" THEN
  514.         OLDINIFILE$ = INIFILE$
  515.         GOSUB MAKEDUMINI
  516.     END IF
  517.  
  518.     ''シンボルリスト作成
  519.     SELECTFONT$ = "FontListItemsOut"
  520.     REGEMU$ = "RegEmuListItemsIn"
  521.     ADDEMU$ = "AddEmuListItemsIn"
  522.     NEMU$ = "EmuNum"
  523.     FONT$ = "FontListItemsIn"
  524.     AddListItem FONT$, "行書体"
  525.     AddListItem FONT$, "楷書体"
  526.     AddListItem FONT$, "教科書体"
  527.  
  528.     i% = BitmapInitialize()
  529.  
  530.     CURPRNSELECT$ = "CurPrnSelect"
  531.     AddListItem CURPRNSELECT$, GetIniKeyString(INIFILE$, "PRINTBUDDY", "MODEL")
  532.  
  533.     IF GetIniKeyString(INIFILE$, "OPTIONS", "DUPKEY") = "1" THEN
  534.         UNIT$ = "ON"
  535.     ELSE
  536.         UNIT$ = "OFF"
  537.     END IF
  538.  
  539. '    PRINTER$ = GetIniKeyString(INIFILE$, "MODE", "Location")
  540. '    IF PRINTER$ = "" THEN
  541.         PRINTER$ = "LOCAL"
  542. '    END IF
  543.     IF GetIniKeyString(INIFILE$, "FONT", "GYOSHO-MEDIUM") = "行書体" THEN
  544.         AddListItem SELECTFONT$, "行書体"
  545.     END IF
  546.     IF GetIniKeyString(INIFILE$, "FONT", "KAISHO-MEDIUM") = "楷書体" THEN
  547.         AddListItem SELECTFONT$, "楷書体"
  548.     END IF
  549.     IF GetIniKeyString(INIFILE$, "FONT", "KYOKASHO-MEDIUM") = "教科書体" THEN
  550.         AddListItem SELECTFONT$, "教科書体"
  551.     END IF
  552.  
  553.     CASET$ = GetIniKeyString(INIFILE$, "OPTIONS", "IN-TRAYS")
  554.     SetSymbolValue "Unit", UNIT$
  555.     SetSymbolValue "Location", PRINTER$
  556.     SetSymbolValue "Caset", CASET$
  557.     
  558.     MAINTENANCE_LOOP:
  559.     i% = FRegisterControl()
  560.     sz$ = UIStartDlg(CUIDLL$, PERIPHERAL, "FMainteDlgProc", 0, "")
  561.     IF sz$ = "CONTINUE" THEN
  562.         CASET$ = GetSymbolValue("Caset")
  563.         IF CASET$ = "1" THEN
  564.             CASET$ = "2"
  565.         ELSEIF CASET$ = "2" THEN
  566.             CASET$ = "3"
  567.         ELSE
  568.             CASET$ = "4"
  569.         END IF
  570.         UNIT$ = GetSymbolValue("Unit")
  571.         PRINTER$ = GetSymbolValue("Location")
  572.         n% = GetListLength("FontListItemsOut")
  573.         FOR i%=1 TO n% STEP 1
  574.             AddListItem SELECTFONT$, GetListItem("FontListItemsOut", i%)
  575.         NEXT i%
  576.         CreateIniKeyValue INIFILE$, "FONT", "GYOSHO-MEDIUM", "", cmoVital + cmoOverwrite
  577.         CreateIniKeyValue INIFILE$, "FONT", "KAISHO-MEDIUM", "", cmoVital + cmoOverwrite
  578.         CreateIniKeyValue INIFILE$, "FONT", "KYOKASHO-MEDIUM", "", cmoVital + cmoOverwrite
  579.         FOR i%=1 TO n% STEP 1
  580.             TEMPFONT$ = GetListItem(SELECTFONT$, i%)
  581.             IF TEMPFONT$ = "行書体" THEN
  582.                 CreateIniKeyValue INIFILE$, "FONT", "GYOSHO-MEDIUM", "行書体", cmoVital + cmoOverwrite
  583.             ELSEIF TEMPFONT$ = "楷書体"    THEN
  584.                 CreateIniKeyValue INIFILE$, "FONT", "KAISHO-MEDIUM", "楷書体", cmoVital + cmoOverwrite    
  585.             ELSEIF TEMPFONT$ = "教科書体" THEN
  586.                 CreateIniKeyValue INIFILE$, "FONT", "KYOKASHO-MEDIUM", "教科書体", cmoVital + cmoOverwrite
  587.             END IF
  588.         NEXT i%
  589.  
  590.         CreateIniKeyValue INIFILE$, "OPTIONS", "IN-TRAYS", CASET$, cmoVital + cmoOverwrite
  591.         IF UNIT$ = "ON" THEN
  592.             CreateIniKeyValue INIFILE$, "OPTIONS", "DUPKEY", "1", cmoVital + cmoOverwrite
  593.         ELSE
  594.             CreateIniKeyValue INIFILE$, "OPTIONS", "DUPKEY", "0", cmoVital + cmoOverwrite
  595.         END IF
  596.         CreateIniKeyValue INIFILE$, "MODE", "Location", PRINTER$, cmoVital + cmoOverwrite
  597.         IF PRINTER$ = "LOCAL" THEN
  598.             CreateIniKeyValue INIFILE$, "MODE", "Direction", "1", cmoVital + cmoOverwrite
  599.         ELSE    
  600.             CreateIniKeyValue INIFILE$, "MODE", "Direction", "0", cmoVital + cmoOverwrite
  601.         END IF
  602.  
  603.     ELSEIF sz$ = "EMULATER" THEN
  604.         UIPop 1
  605.         GOSUB EMULATION
  606.         CASET$ = GetSymbolValue("Caset")
  607.         IF CASET$ = "1" THEN
  608.             CASET$ = "2"
  609.         ELSEIF CASET$ = "2" THEN
  610.             CASET$ = "3"
  611.         ELSE
  612.             CASET$ = "4"
  613.         END IF
  614.         SetSymbolValue "Caset", CASET$
  615.         GOTO MAINTENANCE_LOOP
  616.     ELSE
  617.         IF DoesFileExist(MakePath(PBUDDYDIR$, "DUMMY.INI"), cmoNone) = 1 THEN
  618.             RemoveFile MakePath(PBUDDYDIR$, "DUMMY.INI"), cmoForce
  619.         END IF
  620.         RET$ = "CANCEL"
  621.     END IF
  622.     UIPop 1
  623.     RemoveSymbol "FontListItemsOut"
  624.     RemoveSymbol "RegEmuListItemsIn"
  625.     RemoveSymbol "AddEmuListItemsIn"
  626.     RemoveSymbol "EmuNum"
  627.     RemoveSymbol "FontListItemsIn"
  628.     RemoveSymbol "Unit"
  629.     RemoveSymbol "Location"
  630.     RemoveSymbol "Caset"
  631.     RemoveSymbol "CurPrnSelect"
  632.  
  633.     IF FLOPY$ = "YES" THEN
  634.         INIFILE$ = OLDINIFILE$
  635.     END IF
  636. RETURN
  637.  
  638. '*************************************************************************
  639. '** 目的:                                                                  **
  640. '**     PBUDDY.INIファイルのダミーファイル作成                           **
  641. '*************************************************************************
  642. MAKEDUMINI:
  643.     CopyFile MakePath(GetSymbolValue("STF_SRCDIR"), "PBUDDY.INI"), MakePath(PBUDDYDIR$, "DUMMY.INI"), cmoOverwrite, 0
  644.     INIFILE$ = MakePath(PBUDDYDIR$, "DUMMY.INI")
  645. RETURN
  646.  
  647. '*************************************************************************
  648. '** 目的:                                                                  **
  649. '**     エミュレーションの登録/変更/削除                                **
  650. '*************************************************************************
  651. EMULATION:
  652.     CHANGE$ = "Change"
  653.     REGEMU$ = "RegEmuListItemsIn"
  654.     ADDEMU$ = "AddEmuListItemsIn"
  655.     SetSymbolValue "Change", "NO"
  656.  
  657.     EMULATION_LOOP:    
  658.     RemoveSymbol "RegEmuListItemsIn"
  659.     RemoveSymbol "AddEmuListItemsIn"
  660.     i% = FGetPrivateProfileString(INIFILE$, "OPTION-TRANSLATOR")
  661.     n% = GetListLength("KeyListOut")
  662.     FOR i% = 1 TO n% STEP 1
  663.         TEMPREG$ = GetListItem("KeyListOut", i%)
  664.         IF MID$(TEMPREG$, 1, 1) = ";" THEN
  665.         ELSEIF MID$(TEMPREG$, 1, 1) = "#" THEN
  666.         ELSE
  667.             IF GetIniKeyString(INIFILE$, "OPTION-TRANSLATOR", TEMPREG$) = "2" THEN
  668.                 TEMPREG$ = MID$(TEMPREG$ ,2, LEN(TEMPREG$) - 1)
  669.                 AddListItem REGEMU$, TEMPREG$
  670.             ELSEIF GetIniKeyString(INIFILE$, "OPTION-TRANSLATOR", TEMPREG$) = "3" THEN
  671.                 TEMPREG$ = MID$(TEMPREG$ ,2, LEN(TEMPREG$) - 1)
  672.                 AddListItem REGEMU$, TEMPREG$
  673.             END IF    
  674.         END IF
  675.     NEXT i%
  676.                     
  677.     IF DoesIniSectionExist(INIFILE$, "@N201") = 1 THEN
  678.         AddListItem ADDEMU$, "N201"
  679.     END IF
  680.     IF DoesIniSectionExist(INIFILE$, "@ESCP") = 1 THEN
  681.         AddListItem ADDEMU$, "ESCP"
  682.     END IF
  683.     IF DoesIniSectionExist(INIFILE$, "HP-GL") = 1 THEN
  684.         AddListItem ADDEMU$, "HP-GL"
  685.     END IF
  686.     IF DoesIniSectionExist(INIFILE$, "I5577") = 1 THEN
  687.         AddListItem ADDEMU$, "I5577"
  688.     END IF
  689.     IF DoesIniSectionExist(INIFILE$, "F359") = 1 THEN
  690.         AddListItem ADDEMU$, "F359"
  691.     END IF
  692.     IF DoesIniSectionExist(INIFILE$, "N5273") = 1 THEN
  693.         AddListItem ADDEMU$, "N5273"
  694.     END IF
  695.  
  696.     sz$ = UIStartDlg(CUIDLL$, ADD_EMULATER, "FEmulationDlgProc", 0, "")
  697.         IF sz$ = "EXIT" THEN
  698.             GOSUB REGISTEREMULATION
  699.             UIPop 1
  700.         ELSEIF sz$ = "CANCEL" THEN
  701.             UIPop 1
  702.         ELSEIF sz$ = "KUMIKOMI" THEN
  703.             UIPop 1
  704.             SetSymbolValue "Change", "YES"
  705.             GOSUB REGISTEREMULATION
  706.             GOSUB ADDEMULATION
  707.             GOTO EMULATION_LOOP
  708.         ELSEIF sz$ = "REACTIVATE" THEN
  709.             GOTO EMULATION_LOOP
  710.         ELSE
  711.             UIPop 1
  712.             GOTO EMULATION_LOOP
  713.         END IF
  714.         RemoveSymbol "Change"
  715.         RemoveSymbol "KeyListOut"
  716. RETURN
  717.  
  718. '*************************************************************************
  719. '** 目的:                                                                  **
  720. '**     エミュレーションの登録作業                                        **
  721. '*************************************************************************
  722. REGISTEREMULATION:
  723.     i% = FGetPrivateProfileString(INIFILE$, "OPTION-TRANSLATOR")
  724.     n% = GetListLength("KeyListOut")
  725.     FOR i% = 1 TO n% STEP 1
  726.         TEMPREG$ = GetListItem("KeyListOut", i%)
  727.         IF MID$(TEMPREG$, 1, 1) = ";" THEN
  728.         ELSEIF MID$(TEMPREG$, 1, 1) = "#" THEN
  729.         ELSE
  730.             IF GetIniKeyString(INIFILE$,"OPTION-TRANSLATOR",TEMPREG$) = "2" THEN
  731.                 CreateIniKeyValue INIFILE$, "OPTION-TRANSLATOR", TEMPREG$, "0", cmoVital + cmoOverwrite    
  732.             ELSEIF GetIniKeyString(INIFILE$,"OPTION-TRANSLATOR",TEMPREG$) = "3" THEN
  733.                 CreateIniKeyValue INIFILE$, "OPTION-TRANSLATOR", TEMPREG$, "1", cmoVital + cmoOverwrite    
  734.             END IF
  735.         END IF
  736.     NEXT i%
  737.  
  738.     S_NUM% = GetListLength("DelEmu")
  739.     FOR i% = 1 TO S_NUM% STEP 1
  740.         IF GetIniKeyString(INIFILE$,"OPTION-TRANSLATOR","@"+GetListItem("DelEmu",i%)) = "0" THEN
  741.             CreateIniKeyValue INIFILE$, "OPTION-TRANSLATOR", "@"+GetListItem("DelEmu",i%), "2", cmoVital + cmoOverwrite    
  742.         ELSEIF GetIniKeyString(INIFILE$,"OPTION-TRANSLATOR","@"+GetListItem("DelEmu",i%)) = "1" THEN
  743.             CreateIniKeyValue INIFILE$, "OPTION-TRANSLATOR", "@"+GetListItem("DelEmu",i%), "3", cmoVital + cmoOverwrite    
  744.         END IF
  745.     NEXT i%
  746. RETURN
  747.  
  748. '*************************************************************************
  749. '** 目的:                                                                  **
  750. '**     デインストール                                                      **
  751. '*************************************************************************
  752. DELETE:
  753.     sz$ = UIStartDlg(CUIDLL$, DEINSTALL, "FInfoDlgProc", 0, "")
  754.     IF sz$ = "CONTINUE" THEN
  755.         UIPop 1    
  756.         GOSUB DELETECONFIRM
  757.         IF sz$ = "EXIT" THEN    '”デインストールの確認”で終了ならば
  758.             UIPop 1                'デインストールに戻らず
  759.             RETURN                'メニューに戻る
  760.         ENDIF
  761.         GOTO DELETE
  762.     ELSEIF sz$ = "REACTIVATE" THEN
  763.         GOTO DELETE
  764.     ELSE
  765.         UIPop 1
  766.     END IF
  767. RETURN
  768.  
  769. '*************************************************************************
  770. '** 目的:                                                                  **
  771. '**     デインストールの確認                                               **
  772. '*************************************************************************
  773. DELETECONFIRM:
  774.     sz$ = UIStartDlg(CUIDLL$, DEINST_CONFIRM, "FInfoDlgProc", 0, "")    
  775.     IF sz$ = "DELETE" THEN
  776.         UIPop 1
  777.         GOTO DELETEOBJ
  778.     ELSEIF sz$ = "REACTIVATE" THEN
  779.         GOTO DELETE
  780.     ELSEIF sz$ = "EXIT" THEN
  781.         UIPop 1
  782.         RETURN
  783.     ELSE
  784.         UIPop 1
  785.     END IF     
  786. RETURN
  787.  
  788. '*************************************************************************
  789. '** 目的:                                                                  **
  790. '**     ファイルとグループの削除                                         **
  791. '*************************************************************************
  792. DELETEOBJ:
  793.     ''PBUDDY.INIファイルのInstallキーを0にする
  794.     CreateIniKeyValue INIFILE$, "FILE", "INSTALL", "0", cmoVital + cmoOverwrite
  795.  
  796.     ''PBUDDY\WINディレクトリ内のファイルの削除
  797.     INIFILE$ = PBUDDYDIR$ + "\PBFILE.INI"
  798.     i% = FGetPrivateProfileString(INIFILE$, "pbuddy")
  799.     n% = GetListLength("KeyListOut")
  800.     FOR i% = 1 TO n% STEP 1
  801.         TEMPFILE$ = MakePath(PBUDDYWINDIR$, GetListItem("KeyListOut", i%))
  802.         RemoveFile TEMPFILE$, cmoForce
  803.     NEXT i%
  804.  
  805.     ''PBUDDY\WINSETUPディレクトリ内のファイルの削除
  806.     INIFILE$ = PBUDDYDIR$ + "\PBFILE.INI"
  807.     i% = FGetPrivateProfileString(INIFILE$, "setup")
  808.     n% = GetListLength("KeyListOut")
  809.     FOR i% = 1 TO n% STEP 1
  810.         TEMPFILE$ = MakePath(PBUDDYDIRSETUP$, GetListItem("KeyListOut", i%))
  811.         RemoveFile TEMPFILE$, cmoForce
  812.     NEXT i%
  813.  
  814.     ''WINDOWS\SYSTEMディレクトリ内のファイルの削除
  815.     i% = FGetPrivateProfileString(INIFILE$, "windows")
  816.     n% = GetListLength("KeyListOut")
  817.     FOR i% = 1 TO n% STEP 1
  818.         TEMPFILE$ = MakePath(WINSYSDIR$, GetListItem("KeyListOut", i%))
  819.         RemoveFile TEMPFILE$, cmoForce
  820.     NEXT i%
  821.  
  822.     JUMP_DELETE:
  823.     ''PBUDDY\WINディレクトリの削除
  824.     i% = SetSilentMode(1)
  825.     IF DoesDirExist(PBUDDYWINDIR$) = 1 THEN
  826.         RemoveDir PBUDDYWINDIR$, cmoNone
  827.     END IF
  828.  
  829.     ''WINSETUPディレクトリの削除。
  830.     IF DoesDirExist(PBUDDYDIRSETUP$) = 1 THEN
  831.         RemoveDir PBUDDYDIRSETUP$, cmoNone
  832.     END IF
  833.     i% = SetSilentMode(0)
  834.  
  835.     ''PBFILE.INIファイルの削除
  836.     RemoveFile PBUDDYDIR$+"\PBFILE.INI", cmoForce
  837.  
  838.     sz$ = UIStartDlg(CUIDLL$, DEINSTSUCCESS, "FInfo0DlgProc", 0, "")
  839.     UIPop 1
  840.  
  841. END
  842.  
  843. '*************************************************************************
  844. '** 目的:                                                                  **
  845. '**     一覧以外のオプションエミュレーションの組み込み                      **
  846. '*************************************************************************
  847. ADDEMULATION:
  848.     GOSUB EMULATIONPATH
  849.     IF sz$ = "CONTINUE" THEN
  850.         CHKFILE$ = MakePath(DEST$, "OPTION.INI")
  851.         ans% = DoesfileExist(CHKFILE$, femReadWrite)
  852.         IF ans% = 1 THEN
  853.             UIPop 1
  854.             GOSUB MOREEMULATION
  855.         ELSE
  856.             GOSUB BADPATH
  857.             GOTO ADDEMULATION
  858.         END IF
  859.     ELSEIF sz$ = "REACTIVATE" THEN
  860.         GOTO ADDEMULATION
  861.     END IF
  862.     UIPop 1
  863. RETURN    
  864.  
  865. '*************************************************************************
  866. '** 目的:                                                                  **
  867. '**     一覧以外のオプションエミュレーションの表示                        **
  868. '*************************************************************************
  869. MOREEMULATION:
  870.     EMUNAME$ = GetIniKeyString(CHKFILE$, "Install", "Emulator")
  871.     SetSymbolValue "EmuName", EMUNAME$
  872.     KEY$ = "KeyListOut"
  873.     CONT$ = "Cont"
  874.     sz$ = UIStartDlg(CUIDLL$, OTHER_EMULATER, "FMOREEMULATIONDlgProc", 0, "")
  875.     IF sz$ = "CONTINUE" THEN
  876.         MOREEMULATION$ = GetSymbolValue("MOREEMULATION")
  877.         n% = LEN(MOREEMULATION$)
  878.         FOR i% = 1 TO n% STEP 1
  879.             IF MID$(MOREEMULATION$, i%, 1) = " " THEN
  880.                 GOTO BREAK
  881.             END IF
  882.         NEXT i%
  883.  
  884.         BREAK:
  885.         LISTNAME$ = MID$(MOREEMULATION$, 1, i% - 1)
  886.         i% = FGetPrivateProfileString(CHKFILE$, LISTNAME$)
  887.         n% = GetListLength("KeyListOut")
  888.         FOR i% = 1 TO n% STEP 1
  889.             AddListItem KEY$, GetListItem("KeyListOut", i%)
  890.             AddListItem CONT$, GetIniKeyString(CHKFILE$, LISTNAME$, GetListItem(KEY$, i%))
  891.         NEXT i%
  892.         FOR i% = 1 TO n% STEP 1
  893.             CreateIniKeyValue INIFILE$, LISTNAME$, GetListItem(KEY$, i%), GetListItem(CONT$, i%), cmoVital + cmoOverwrite
  894.         NEXT i%
  895.     ELSEIF sz$ = "REACTIVATE" THEN
  896.     ELSE
  897.     END IF
  898.     RemoveSymbol "KeyListOut"
  899.     RemoveSymbol "Cont"
  900.  
  901. RETURN
  902.  
  903. '*************************************************************************
  904. '** 目的:                                                                  **
  905. '**     標準インストール作業                                               **
  906. '*************************************************************************
  907. STANDARD_INSTALL:
  908.     GOSUB CREATELIST
  909.  
  910.     ''カーソルを砂時計にする
  911.     hPrevCur% = ShowWaitCursor()    
  912.  
  913.     ''PBUDDY.INIとWIN.INIファイル初期化中ダイアログボックスを表示
  914.     sz$ = UIStartDlg(CUIDLL$, WAIT, "FPassProc", 0, "")        
  915.  
  916.     ''PBUDDY.INIとWIN.INIファイルの修正
  917.     GOSUB MAKEINI
  918.  
  919.     ''ComDrvXXの名称を変更
  920.     GOSUB RENAMECOMDRV
  921.  
  922.     ''PBINST.INFファイルを変更
  923.     GOSUB RENAMESETUP
  924.  
  925.     ''プログラムグループとアイコンの作成
  926.     GOSUB MAKEGROUP
  927.  
  928.     UIPop 1
  929.  
  930.     ''カーソルを矢印にする
  931.     RestoreCursor hPrevCur%
  932. RETURN
  933.  
  934. '*************************************************************************
  935. '** 目的:                                                                  **
  936. '**     カスタムインストール作業                                         **
  937. '*************************************************************************
  938. CUSTOM_INSTALL:
  939.     IF GetListItem(CHECKSTATES$,REMOTEPANEL) = "OFF" AND GetListItem(CHECKSTATES$,MONITOR) = "OFF" THEN
  940.         ReplaceListItem CHECKSTATES$, SETUP, "OFF"
  941.         ReplaceListItem CHECKSTATES$, STSRES, "OFF"
  942.         ReplaceListItem CHECKSTATES$, RCPRES, "OFF"
  943.         ReplaceListItem CHECKSTATES$, STATUS, "OFF"
  944.         ReplaceListItem CHECKSTATES$, RCPDLL, "OFF"
  945.     END IF
  946.  
  947.     IF GetListItem(CHECKSTATES$,REMOTEPANEL) = "ON" AND GetListItem(CHECKSTATES$,MONITOR) = "OFF" THEN
  948.         ReplaceListItem CHECKSTATES$, STSRES, "OFF"
  949.         ReplaceListItem CHECKSTATES$, STATUS, "OFF"
  950.         ReplaceListItem CHECKSTATES$, STSRES, "OFF"
  951.     END IF
  952.  
  953.     IF GetListItem(CHECKSTATES$,REMOTEPANEL) = "OFF" AND GetListItem(CHECKSTATES$,MONITOR) = "ON" THEN
  954.         ReplaceListItem CHECKSTATES$, RCPDLL, "OFF"
  955.         ReplaceListItem CHECKSTATES$, RCPRES, "OFF"
  956.     END IF
  957.  
  958.     GOSUB CREATELIST
  959.  
  960. '    ''プリンタドライバをインストールする場合
  961. '    IF GetListItem(CHECKSTATES$, DRIVER) = "ON" THEN
  962. '         GOSUB PRTDRV_INSTALL
  963. '    END IF
  964.  
  965.     ''カーソルを砂時計にする
  966.     hPrevCur% = ShowWaitCursor()    
  967.  
  968.     ''PBUDDY.INIとWIN.INIファイル初期化中ダイアログボックスを表示
  969.     sz$ = UIStartDlg(CUIDLL$, WAIT, "FPassProc", 0, "")        
  970.  
  971.     ''PBUDDY.INIとWIN.INIファイルの修正
  972.     GOSUB MAKEINI
  973.  
  974. '    ''ComDrvXXの名称を変更
  975.     IF GetListItem(CHECKSTATES$,REMOTEPANEL) = "OFF" AND GetListItem(CHECKSTATES$,MONITOR) = "OFF" THEN
  976.     ELSE
  977.         GOSUB RENAMECOMDRV
  978.     END IF
  979.  
  980.     ''PBINST.INFファイルを変更
  981.     GOSUB RENAMESETUP
  982.  
  983.     ''プログラムグループとアイコンの作成
  984.     GOSUB MAKEGROUP
  985.  
  986.     UIPop 1
  987.  
  988.     ''カーソルを矢印にする
  989.     RestoreCursor hPrevCur%
  990.  
  991.     ''Windowsをリブートするか確認する
  992.     GOSUB REBOOT
  993. END
  994.  
  995. '*************************************************************************
  996. '** 目的:                                                                  **
  997. '**     ファイルコピーリスト作成                                         **
  998. '*************************************************************************
  999. CREATELIST:
  1000.     ClearCopyList
  1001.  
  1002. '    AddOptFilesToCopyList COMDRV98
  1003. '    AddOptFilesToCopyList COMDRVAT
  1004. '    IF CST$ <> "1" THEN
  1005. '        AddOptFilesToCopyList DRIVER
  1006. '    END IF
  1007. '    IF DoesFileExist(MakePath(PBUDDYDIR$, "PBUDDY.INI"), cmoNone) = 0 THEN
  1008.            AddOptFilesToCopyList INIFILES
  1009. '    END IF
  1010.     AddOptFilesToCopyList DINIFILES
  1011.     AddOptFilesToCopyList MONITOR
  1012.     AddOptFilesToCopyList REMOTEPANEL
  1013.     AddOptFilesToCopyList CTL
  1014.     AddOptFilesToCopyList SETUP
  1015.     AddOptFilesToCopyList CJLMON
  1016.     AddOptFilesToCopyList STATUS
  1017.     AddOptFilesToCopyList RCPDLL
  1018.     AddOptFilesToCopyList RCPRES
  1019.     AddOptFilesToCopyList STSRES
  1020.  
  1021.     CreateDir PBUDDYDIR$, cmoNone
  1022.  
  1023.     i% = BitmapCntrlInit()
  1024.     AddToBillboardList CUIDLL$, BILLBOARD, "FModelessDlgProc", 1
  1025.  
  1026.     ''コピーゲージを表示
  1027.     SetCopyGaugePosition -1, GetScreenHeight() / 6 - 16
  1028.     SetRestartDir WINDIR$
  1029.  
  1030.     ''コピー
  1031.     CopyFilesInCopyList
  1032. RETURN
  1033.  
  1034. '*************************************************************************
  1035. '** 目的:                                                                  **
  1036. '**     プログラムグループとアイコンの作成                                **
  1037. '*************************************************************************
  1038. MAKEGROUP:
  1039.     IF GetListItem(CHECKSTATES$,REMOTEPANEL) = "OFF" AND GetListItem(CHECKSTATES$,MONITOR) = "OFF" THEN
  1040.     ELSE
  1041.         CreateProgmanGroup "Print Buddy for Windows95", "", cmoNone
  1042. '        ShowProgmanGroup "Print Buddy",1, cmoNone
  1043.     END IF
  1044.  
  1045.     ''リモートパネル
  1046.     IF GetListItem(CHECKSTATES$, REMOTEPANEL) = "ON" THEN
  1047.         CreateProgmanItem "Print Buddy for Windows95", "リモートパネル", PBUDDYWINDIR$+"\rcpwin.exe","", comOverwrite
  1048.     END IF
  1049.  
  1050.     ''ステータスモニタ
  1051.     IF GetListItem(CHECKSTATES$, STATUS) = "ON" THEN
  1052.         CreateProgmanItem "Print Buddy for Windows95", "ステータスモニタ", PBUDDYWINDIR$+"\stswin.exe","", comOverwrite
  1053.     END IF
  1054.  
  1055.     ''セットアップ
  1056.     IF GetListItem(CHECKSTATES$, SETUP) = "ON" THEN
  1057.         CreateProgmanItem "Print Buddy for Windows95", "インストーラ", PBUDDYDIRSETUP$+"\setup.exe","", comOverwrite
  1058.         CreateIniKeyValue INIFILE$, "FILE", "INSTALL", "1", cmoVital + cmoOverwrite
  1059.     END IF
  1060. RETURN
  1061.  
  1062. '*************************************************************************
  1063. '** 目的:                                                                  **
  1064. '**     INIファイルの変更                                                  **
  1065. '*************************************************************************
  1066. MAKEINI:
  1067.     ''DUMMY.INIファイルがあった場合には、DUMMY.INIファイルに書き込む
  1068.     IF DoesFileExist(MakePath(PBUDDYDIR$, "DUMMY.INI"), cmoNone) = 1 THEN
  1069.         OLDINIFILE$ = INIFILE$
  1070.         INIFILE$ = MakePath(PBUDDYDIR$, "DUMMY.INI")
  1071.     END IF
  1072.  
  1073.     ''PBUDDY.INIファイルのPRINTBUDDYセクションにインストールディレクトリを登録
  1074.     CreateIniKeyValue INIFILE$, "PRINTBUDDY", "PBUDDYDIR", PBUDDYDIR$, cmoVital + cmoOverwrite
  1075.     CreateIniKeyValue INIFILE$, "PRINTBUDDY", "PBUDDYWINDIR", PBUDDYWINDIR$, cmoVital + cmoOverwrite
  1076.     CreateIniKeyValue INIFILE$, "PRINTBUDDY", "PBUDDYDOSDIR", PBUDDYDOSDIR$, cmoVital + cmoOverwrite
  1077. '    pbuddy.iniのMODELセクションに選択されたプリンタ名を入れる。
  1078.     CreateIniKeyValue INIFILE$, "PRINTBUDDY", "MODEL", GetListItem(FORINIPRNNAME$,VAL(SELECTPRNINDEX$)), cmoVital + cmoOverwrite
  1079.  
  1080.     ''PBUDDY.INIファイルおよびWIN.INIファイルの修正
  1081.     IF PRINTER$ = "NETWORK" THEN
  1082.         CreateIniKeyValue INIFILE$, "MODE", "Direction", "0", cmoVital + cmoOverwrite
  1083.     ELSEIF PRINTER$ = "LOCAL" THEN
  1084.         IF COMPUTER$ = "NEC" THEN
  1085.             IF COMMDRV$ <> "NONE" THEN
  1086.                 CreateIniKeyValue WININIFILE$, "WINDOWS", "spooler", "no", cmoVital + cmoOverwrite
  1087.             END IF                
  1088.         ELSE
  1089.             CreateIniKeyValue WININIFILE$, "WINDOWS", "spooler", "no", cmoVital + cmoOverwrite     
  1090.             CreateIniKeyValue INIFILE$, "MODE", "Direction", "1", cmoVital + cmoOverwrite
  1091.         END IF
  1092.     END IF
  1093.  
  1094. '    ''WIN.INIファイルの[WINDOWS]セクションにプリンタドライバを登録
  1095. '    IF CST$ <> "1" THEN 
  1096. '        IF GetListItem(CHECKSTATES$, 3) = "ON" THEN
  1097. '
  1098. '            CreateIniKeyValue WININIFILE$, "WINDOWS", "device", GetSymbolValue("ListItemsIn")+",LIPS4,LPT1:", cmoVital + cmoOverwrite
  1099. '            CreateIniKeyValue WININIFILE$, "PrinterPorts", GetSymbolValue("ListItemsIn"), "LIPS4,LPT1:,15,45", cmoVital + cmoOverwrite
  1100. '            CreateIniKeyValue WININIFILE$, "devices", GetSymbolValue("ListItemsIn"), "LIPS4,LPT1:", cmoVital + cmoOverwrite
  1101. '
  1102. '        END IF
  1103. '    END IF
  1104.  
  1105.     ''WIN.INIファイルへ[Print Buddy]セクションを追加しディレクトリを登録する
  1106.     CreateIniKeyValue WININIFILE$, "Print Buddy", "Path", PBUDDYDIR$, cmoVital + cmoOverwrite
  1107.  
  1108.     ''WIN.INIファイルにSTATUSキーを追加
  1109.     GOSUB FILLSTATUS
  1110.     
  1111.     ''DUMMY.INIファイルがあったらPBUDDY.INIファイルへリネーム
  1112.     IF DoesFileExist(MakePath(PBUDDYDIR$, "DUMMY.INI"), cmoNone) = 1 THEN
  1113.         RemoveFile MakePath(PBUDDYDIR$, "PBUDDY.INI"), cmoForce
  1114.         RenameFile MakePath(PBUDDYDIR$, "DUMMY.INI"), "PBUDDY.INI"
  1115.         INIFILE$ = OLDINIFILE$
  1116.     END IF
  1117.  
  1118. RETURN
  1119.  
  1120. '*************************************************************************
  1121. '** 目的:                                                                  **
  1122. '**     WIN.INIにSTATUSおよびプリンタドライバ名を追加                    **
  1123. '*************************************************************************
  1124. FILLSTATUS:
  1125.     ''STATUSキーの追加
  1126.     IF COMPUTER$ = "NEC" THEN
  1127.         IF COMMDRV$ <> "NONE" THEN
  1128.             CreateIniKeyValue WININIFILE$, "Print Buddy プリントマネージャ", "Status", "1", cmoVital + cmoOverwrite
  1129.         END IF
  1130.     ELSEIF COMPUTER$ = "DOSV" THEN
  1131.         CreateIniKeyValue WININIFILE$, "Print Buddy プリントマネージャ", "Status", "1", cmoVital + cmoOverwrite
  1132.     ELSE
  1133.         CreateIniKeyValue WININIFILE$, "Print Buddy プリントマネージャ", "Status", "0", cmoVital + cmoOverwrite
  1134.     END IF
  1135.  
  1136. '    ''プリンタドライバ名の追加
  1137. '    CreateIniKeyValue WININIFILE$, "Print Buddy プリンタ", GetSymbolValue("ListItemsIn"), "1", cmoVital + cmoOverwrite
  1138.  
  1139. RETURN        
  1140.  
  1141. '*************************************************************************
  1142. '** 目的:                                                                  **
  1143. '**     コミュニケーションドライバの名称変更                               **
  1144. '*************************************************************************
  1145. RENAMECOMDRV:
  1146.     RemoveFile PBUDDYDIR$+"\DEFAULT.RCT", cmoNone
  1147.     RemoveFile WINSYSDIR$+"STSRES.DLL", cmoNone 
  1148.     RemoveFile PBUDDYWINDIR$+"\RCPRES.DLL", cmoNone
  1149.  
  1150.     IF GetListItem(FORINIPRNNAME$,VAL(SELECTPRNINDEX$)) = "LBP-450" THEN
  1151.         RemoveFile WINSYSDIR$+"STSRES.390", cmoNone
  1152.         RemoveFile PBUDDYWINDIR$+"\RCPRES.390", cmoNone
  1153.         RemoveFile PBUDDYDIR$+"\DEFAULT.730", cmoNone
  1154.         RemoveFile PBUDDYDIR$+"\DEFAULT.720", cmoNone
  1155.  
  1156.         RenameFile WINSYSDIR$+"STSRES.410", "STSRES.DLL"
  1157.         RenameFile PBUDDYDIR$+"\DEFAULT.450", "DEFAULT.RCT"
  1158.         RenameFile PBUDDYWINDIR$+"\RCPRES.410", "RCPRES.DLL"
  1159.         RETURN
  1160.     END IF
  1161.  
  1162.     IF GetListItem(FORINIPRNNAME$,VAL(SELECTPRNINDEX$)) = "LBP-730" THEN
  1163.         RemoveFile WINSYSDIR$+"STSRES.410", cmoNone
  1164.         RemoveFile PBUDDYWINDIR$+"\RCPRES.410", cmoNone
  1165.         RemoveFile PBUDDYDIR$+"\DEFAULT.450", cmoNone
  1166.         RemoveFile PBUDDYDIR$+"\DEFAULT.720", cmoNone
  1167.  
  1168.         RenameFile WINSYSDIR$+"STSRES.390", "STSRES.DLL"
  1169.         RenameFile PBUDDYDIR$+"\DEFAULT.730", "DEFAULT.RCT"
  1170.         RenameFile PBUDDYWINDIR$+"\RCPRES.390", "RCPRES.DLL"
  1171.         RETURN
  1172.     END IF
  1173.  
  1174.     IF GetListItem(FORINIPRNNAME$,VAL(SELECTPRNINDEX$)) = "LBP-720" THEN
  1175.         RemoveFile WINSYSDIR$+"STSRES.410", cmoNone
  1176.         RemoveFile PBUDDYWINDIR$+"\RCPRES.410", cmoNone
  1177.         RemoveFile PBUDDYDIR$+"\DEFAULT.450", cmoNone
  1178.         RemoveFile PBUDDYDIR$+"\DEFAULT.730", cmoNone
  1179.  
  1180.         RenameFile WINSYSDIR$+"STSRES.390", "STSRES.DLL"
  1181.         RenameFile PBUDDYDIR$+"\DEFAULT.720", "DEFAULT.RCT"
  1182.         RenameFile PBUDDYWINDIR$+"\RCPRES.390", "RCPRES.DLL"
  1183.         RETURN
  1184.     END IF
  1185.     
  1186.  
  1187. RETURN
  1188.  
  1189. '*************************************************************************
  1190. '** 目的:                                                                  **
  1191. '**     ハードディスク用SETUPファイルの作成                              **
  1192. '*************************************************************************
  1193. RENAMESETUP:
  1194.     ''SETUP.LSTファイルの作成
  1195.     IF GetListItem(CHECKSTATES$, 8) = "ON" THEN
  1196.         RemoveFile PBUDDYDIRSETUP$+"\SETUP.LST", cmoNone
  1197.         RenameFile PBUDDYDIRSETUP$+"\SETUP.L_T", "SETUP.LST"
  1198.     END IF
  1199. RETURN
  1200.  
  1201. '*************************************************************************
  1202. '** 目的:                                                                  **
  1203. '**     Windowsをリブートする場合の確認メッセージを表示                       **
  1204. '*************************************************************************
  1205. REBOOT:
  1206.     sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FInfoDlgProc", 0, "")        ''インストール完了ダイアログボックスを表示
  1207.     UIPop 1
  1208. RETURN
  1209.  
  1210. '*************************************************************************
  1211. '** 目的:                                                                  **
  1212. '**     終了                                                               **
  1213. '*************************************************************************
  1214. QUIT:
  1215.     ON ERROR GOTO ERRQUIT
  1216.  
  1217.     IF ERR = 0 THEN
  1218.         dlg% = EXITSUCCESS
  1219.     ELSEIF ERR = STFQUIT THEN
  1220.         dlg% = EXITQUIT
  1221.     ELSE
  1222.         dlg% = EXITFAILURE
  1223.     END IF
  1224.  
  1225.     QUITL1:
  1226.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  1227.     IF sz$ = "REACTIVATE" THEN
  1228.         GOTO QUITL1
  1229.     END IF
  1230.     UIPop 1
  1231. END
  1232.     
  1233. '*************************************************************************
  1234. '** 目的:                                                                  **
  1235. '**     エラー終了                                                        **
  1236. '*************************************************************************
  1237. ERRQUIT:
  1238.     i% = DoMsgBox("インストールファイルが破損しています。", "インストールの中止", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  1239. END
  1240.  
  1241. '*************************************************************************
  1242. '** 目的:                                                                  **
  1243. '**     インストーラの中断メッセージ その1                                **
  1244. '*************************************************************************
  1245. ASKQUIT_1:
  1246.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT_1, "FQuitDlgProc", 0, "")
  1247.  
  1248.     IF sz$ = "EXIT" THEN
  1249.         UIPopAll
  1250.         ERROR STFQUIT
  1251.     ELSEIF sz$ = "REACTIVATE" THEN
  1252.         GOTO ASKQUIT_1
  1253.     ELSEIF sz$ = "CONTINUE" THEN
  1254.         UIPop 1
  1255.     ELSE 
  1256.         GOTO ASKQUIT_1
  1257.     END IF
  1258. RETURN
  1259.  
  1260. '*************************************************************************
  1261. '** 目的:                                                                  **
  1262. '**     インストーラの中断メッセージ その3                                **
  1263. '*************************************************************************
  1264. ASKQUIT_3:
  1265.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT_3, "FQuitDlgProc", 0, "")
  1266.     IF sz$ = "EXIT" THEN
  1267.         UIPopAll
  1268.         END
  1269.     ELSEIF sz$ = "REACTIVATE" THEN
  1270.         GOTO ASKQUIT_3
  1271.     ELSEIF sz$ = "CONTINUE" THEN
  1272.         UIPop 1
  1273.     ELSE
  1274.         GOTO ASKQUIT_3
  1275.     END IF
  1276. RETURN
  1277.  
  1278. '*************************************************************************
  1279. '** 目的:                                                                  **
  1280. '**     ディレクトリ入力用ダイアログボックス表示 その1                  **
  1281. '*************************************************************************
  1282. INSTALLPATH:
  1283.     SetSymbolValue "SetupDirIn", DEST$
  1284.     IF DoesDirExist(DEST$) = 0 THEN
  1285.         TEMPDEST$ = MID$(DEST$, 1, 3)
  1286.         SetSymbolValue "ReferenceDirChk", "ON"
  1287.         SetSymbolValue "ReferenceDir", TEMPDEST$
  1288.     ELSE        
  1289.         SetSymbolValue "ReferenceDir", DEST$
  1290.     END IF
  1291.     SetSymbolValue "EditFocus", "END"
  1292.  
  1293.     INSTALLPATH_LOOP:
  1294.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FInputDirDlgProc", 0, "")
  1295.     DEST$ = GetSymbolValue("SetupDirOut")
  1296.     IF DoesDirExist(DEST$+"\WINSETUP") = 0 THEN
  1297.         ReplaceListItem CHECKSTATES$, 8, "ON" ''SETUP = 8
  1298.         ReplaceListItem CHECKSTATES$, 9, "ON" ''DINIFILE = 9
  1299.     ELSE
  1300.         ReplaceListItem CHECKSTATES$, 8, "OFF" ''SETUP = 8
  1301.         ReplaceListItem CHECKSTATES$, 9, "OFF" ''DINIFILE = 9
  1302.     END IF
  1303.     SetSymbolValue "ReferenceDirChk", "OFF"
  1304.     IF sz$ = "CONTINUE" THEN
  1305.         IF IsDirWritable(DEST$) = 0 THEN
  1306.             GOSUB BADPATH
  1307.             GOTO INSTALLPATH_LOOP
  1308.         END IF
  1309.         UIPop 1
  1310.     ELSEIF sz$ = "REACTIVATE" THEN
  1311.         GOTO INSTALLPATH_LOOP
  1312.     ELSE
  1313.         GOSUB ASKQUIT_1
  1314.         GOTO INSTALLPATH
  1315.     END IF
  1316. RETURN
  1317.  
  1318. '*************************************************************************
  1319. '** 目的:                                                                  **
  1320. '**     ディレクトリ入力用ダイアログボックス表示 その2                  **
  1321. '*************************************************************************
  1322. EMULATIONPATH:
  1323.     IF COMPUTER$ = "NEC" THEN
  1324.         TEMPDEST$ = "C:\"
  1325.     ELSE
  1326.         TEMPDEST$ = "A:\"
  1327.     END IF
  1328.     SetSymbolValue "EditFocus", "END"
  1329.  
  1330.     EMULATIONPATH_LOOP:
  1331.     SetSymbolValue "ReferenceDirChk", "ON"
  1332.     SetSymbolValue "ReferenceDir", TEMPDEST$
  1333.     SetSymbolValue "SetupDirIn", TEMPDEST$
  1334.     SetSymbolValue "EditFocus", "END"
  1335.  
  1336.     sz$ = UIStartDlg(CUIDLL$, EMULATER_DIR, "FInputFDDirDlgProc", 0, "")
  1337.     SetSymbolValue "ReferenceDirChk", "OFF"
  1338.  
  1339.     DEST$ = GetSymbolValue("SetupDirOut")
  1340.     IF sz$ = "CONTINUE" THEN
  1341.     ELSEIF sz$ = "REACTIVATE" THEN
  1342.         GOTO EMULATIONPATH_LOOP
  1343.     ELSE
  1344.         UIPop 1
  1345.     END IF
  1346. RETURN
  1347.  
  1348. '*************************************************************************
  1349. '** 目的:                                                                  **
  1350. '**     入力パス不良メッセージボックス表示                                 **
  1351. '*************************************************************************
  1352. BADPATH:
  1353.     sz$ = UIStartDlg(CUIDLL$, PATH_ERR, "FInfo0DlgProc", 0, "")
  1354.     IF sz$ = "REACTIVATE" THEN
  1355.         RecalcPath
  1356.         SetDriveStatus
  1357.         GOTO BADPATH
  1358.     END IF
  1359.     UIPop 1
  1360. RETURN
  1361.  
  1362. '*************************************************************************
  1363. '** 目的:                                                                  **
  1364. '**     メモリ不足メッセージボックス表示                                 **
  1365. '*************************************************************************
  1366. TOOBIG:
  1367.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  1368.     IF sz$ = "REACTIVATE" THEN
  1369.         RecalcPath
  1370.         SetDriveStatus
  1371.         GOTO TOOBIG
  1372.     END IF
  1373.     UIPop 1
  1374. RETURN
  1375.  
  1376. '***************************************************************************
  1377. '** 目的                                                                    **
  1378. '**     コピーリスト作成                                                  **
  1379. '** 引き数                                                                   **
  1380. '**     ftype%  - 以下に示すファイル                                         **
  1381. '**             COMDRV98, COMDRVAT, DRIVER, INIFILES, MONITOR, REOTEPANEL **
  1382. '** リターン値                                                             **
  1383. '**     なし                                                                **
  1384. '***************************************************************************
  1385. SUB AddOptFilesToCopyList (ftype%) STATIC
  1386.  
  1387.    IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  1388.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  1389. '        IF ftype% = DRIVER THEN
  1390. '            AddSectionFilesToCopyList "Driver", SrcDir$, WINSYSDIR$
  1391.         IF ftype% = INIFILES THEN
  1392.             AddSectionFilesToCopyList "IniFile", SrcDir$, PBUDDYDIR$
  1393.         ELSEIF ftype% = DINIFILES THEN
  1394.             AddSectionFilesToCopyList "DIniFile", SrcDir$, PBUDDYDIR$
  1395.         ELSEIF ftype% = MONITOR THEN
  1396.             AddSectionFilesToCopyList "SMonitor", SrcDir$, WINSYSDIR$
  1397.         ELSEIF ftype% = REMOTEPANEL THEN
  1398.             AddSectionFilesToCopyList "RCP", SrcDir$, PBUDDYWINDIR$
  1399.         ELSEIF ftype% = CTL THEN
  1400.             AddSectionFilesToCopyList "Ctl", SrcDir$, WINSYSDIR$
  1401.         ELSEIF ftype% = SETUP THEN
  1402.             AddSectionFilesToCopyList "Setup", SrcDir$, PBUDDYDIRSETUP$
  1403.         ELSEIF ftype% = CJLMON THEN
  1404.             AddSectionFilesToCopyList "CjlMon", SrcDir$, WINSYSDIR$
  1405.         ELSEIF ftype% = STATUS THEN
  1406.             AddSectionFilesToCopyList "STS", SrcDir$, PBUDDYWINDIR$
  1407.         ELSEIF ftype% = RCPDLL THEN
  1408.             AddSectionFilesToCopyList "RCPDll", SrcDir$, WINSYSDIR$
  1409.         ELSEIF ftype% = RCPRES THEN
  1410.             AddSectionFilesToCopyList "RCPRes", SrcDir$, PBUDDYWINDIR$
  1411.         ELSEIF ftype% = STSRES THEN
  1412.             AddSectionFilesToCopyList "STSRes", SrcDir$, WINSYSDIR$
  1413.         END IF
  1414.         SrcDir$ = ""
  1415.    END IF
  1416. END SUB
  1417.  
  1418.  
  1419. '*************************************************************************
  1420. '** 目的:                                                                  **
  1421. '**     インストールファイルの合計サイズを計算 その2                      **
  1422. '**                                                                        **
  1423. '** 引き数:                                                             **
  1424. '**     なし                                                              **
  1425. '** リターン値:                                                           **
  1426. '**     なし                                                              **
  1427. '*************************************************************************
  1428. SUB RecalcOptFiles (ftype%) STATIC
  1429.     hPrevCur% = ShowWaitCursor()
  1430.     ClearCopyList
  1431.     AddOptFilesToCopyList ftype%
  1432.  
  1433.     fExtra% = 0
  1434.     IF ftype% = SETUP THEN
  1435.         ListSym$ = SETUPNEEDS$
  1436.         IF GetListItem(CHECKSTATES$, SETUP) = "ON" THEN
  1437.             ''Add extra cost to Windows drive for ini/progman, etc.
  1438.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  1439.             ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  1440.             fExtra% = 1
  1441.         END IF
  1442. '    ELSEIF ftype% = DRIVER THEN
  1443. '        ListSym$ = DRIVERNEEDS$
  1444.     ELSEIF ftype% = INIFILES THEN
  1445.         ListSym$ = INIFILESNEEDS$
  1446.     ELSEIF ftype% = DINIFILES THEN
  1447.         ListSym$ = DINIFILESNEEDS$
  1448.     ELSEIF ftype% = MONITOR    THEN
  1449.         ListSym$ = MONITORNEEDS$
  1450.     ELSEIF ftype% = REMOTEPANEL    THEN
  1451.         ListSym$ = REMOTEPANELNEEDS$
  1452.     ELSEIF ftype% = CTL    THEN
  1453.         ListSym$ = CTLNEEDS$
  1454.     ELSEIF ftype% = CJLMON    THEN
  1455.         ListSym$ = CJLMONNEEDS$
  1456.     ELSEIF ftype% = STATUS    THEN
  1457.         ListSym$ = STATUSNEEDS$
  1458.     ELSEIF ftype% = RCPDLL    THEN
  1459.         ListSym$ = RCPDLLNEEDS$
  1460.     ELSEIF ftype% = RCPRES    THEN
  1461.         ListSym$ = RCPRESNEEDS$
  1462.     ELSEIF ftype% = STSRES    THEN
  1463.         ListSym$ = STSRESNEEDS$
  1464.     END IF
  1465.  
  1466.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  1467.  
  1468.     cost& = 0
  1469.     FOR i% = 1 TO 26 STEP 1
  1470.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  1471.     NEXT i%
  1472.  
  1473.     IF StillNeed& > 0 THEN
  1474.         ReplaceListItem BIGLIST$, ftype%, "YES"
  1475.     ELSE
  1476.         ReplaceListItem BIGLIST$, ftype%, ""
  1477.     END IF
  1478.  
  1479.     IF fExtra% THEN
  1480.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  1481.     END IF
  1482.        RestoreCursor hPrevCur%
  1483.     ListSym$ = ""
  1484.  
  1485. END SUB
  1486.  
  1487.  
  1488. '*************************************************************************
  1489. '** 目的:                                                                  **
  1490. '**     インストールファイルの合計サイズを計算 その1                      **
  1491. '**                                                                        **
  1492. '** 引き数:                                                             **
  1493. '**     なし                                                              **
  1494. '** リターン値:                                                           **
  1495. '**     なし                                                              **
  1496. '*************************************************************************
  1497. SUB RecalcPath STATIC
  1498.  
  1499.     hPrevCur% = ShowWaitCursor()
  1500.  
  1501. '   RecalcOptFiles DRIVER
  1502.     RecalcOptFiles INIFILES
  1503.     RecalcOptFiles DINIFILES
  1504.     RecalcOptFiles MONITOR
  1505.     RecalcOptFiles REMOTEPANEL
  1506.     RecalcOptFiles CTL
  1507.     RecalcOptFiles SETUP
  1508. '    RecalcOptFiles CJLMON
  1509. '    RecalcOptFiles STATUS
  1510. '    RecalcOptFiles RCPDLL
  1511. '    RecalcOptFiles RCPRES
  1512. '    RecalcOptFiles STSRES
  1513.  
  1514.     RestoreCursor hPrevCur%
  1515. END SUB
  1516.  
  1517.  
  1518. '*************************************************************************
  1519. '** 目的:                                                                  **
  1520. '**     ディスクスペースとインストールファイルのサイズ表示               **
  1521. '**                                                                        **
  1522. '** 引き数:                                                             **
  1523. '**     なし                                                              **
  1524. '** リターン値:                                                           **
  1525. '**     なし                                                              **
  1526. '*************************************************************************
  1527. SUB SetDriveStatus STATIC
  1528.  
  1529.     cost& = 0
  1530.     drive$ = MID$(DEST$, 1, 1)
  1531.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  1532.  
  1533. '    IF GetListItem(CHECKSTATES$, 3) = "ON" THEN
  1534. '        cost& = cost& + 622197
  1535. '    END IF
  1536.  
  1537. '    cost& = cost& + 619723
  1538.  
  1539.     IF GetListItem(CHECKSTATES$, 5) = "ON" THEN
  1540.         cost& = cost& + 409000
  1541.     END IF
  1542.     IF GetListItem(CHECKSTATES$, 6) = "ON" THEN
  1543.         cost& = cost& + 1417022
  1544.     END IF
  1545.  
  1546.     free& = GetFreeSpaceForDrive(drive$)
  1547.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  1548.  
  1549.     IF GetListItem(CHECKSTATES$, CHECKID) = "ON" THEN
  1550.         ReplaceListItem DRIVETEXT$, 2, "0" + " K"
  1551.     ELSEIF GetListItem(CHECKSTATES$, CHECKID) = "OFF" THEN
  1552.         ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  1553.     END IF
  1554.  
  1555.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  1556.  
  1557. '    IF drive$ = WINDRIVE$ THEN
  1558. '        ReplaceListItem DRIVETEXT$, 4, ""
  1559. '        ReplaceListItem DRIVETEXT$, 5, ""
  1560. '        ReplaceListItem DRIVETEXT$, 6, ""
  1561. '    ELSE
  1562. '        cost& = 0
  1563. '        ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  1564. '        IF GetListItem(CHECKSTATES$, 3) = "ON" THEN
  1565. '            cost& = cost& + 584453 + 6114 + 6018 + 5547 + 21648
  1566. '        END IF
  1567. '        IF GetListItem(CHECKSTATES$, 5) = "ON" THEN
  1568. '            cost& = cost& + 250866
  1569. '        END IF
  1570.  
  1571. '       IF cost& = 0 THEN
  1572. '            ReplaceListItem DRIVETEXT$, 4, ""
  1573. '            ReplaceListItem DRIVETEXT$, 5, ""
  1574. '            ReplaceListItem DRIVETEXT$, 6, ""
  1575. '        ELSE
  1576. '            free& = GetFreeSpaceForDrive(WINDRIVE$)
  1577. '            ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  1578. '
  1579. '            IF GetListItem(CHECKSTATES$, CHECKID) = "ON" THEN
  1580. '                ReplaceListItem DRIVETEXT$, 5, "0" + " K"
  1581. '            ELSEIF GetListItem(CHECKSTATES$, CHECKID) = "OFF" THEN
  1582. '                ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  1583. '            END IF
  1584.  
  1585. '            ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  1586. '        END IF
  1587. '    END IF
  1588. END SUB
  1589.  
  1590.     
  1591. '*************************************************************************
  1592. '** 目的:                                                                  **
  1593. '**     パスの作成 その1                                                 **
  1594. '**                                                                        **
  1595. '** 引き数:                                                             **
  1596. '**     なし                                                              **
  1597. '** リターン値:                                                           **
  1598. '**     なし                                                              **
  1599. '*************************************************************************
  1600. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  1601.     IF szDir$ = "" THEN
  1602.         MakePath = szFile$
  1603.     ELSEIF szFile$ = "" THEN
  1604.         MakePath = szDir$
  1605.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  1606.         MakePath = MakePath2(szDir$, szFile$)
  1607.     ELSE
  1608.         MakePath = szDir$ + "\" + szFile$
  1609.     END IF
  1610. END FUNCTION
  1611.  
  1612.  
  1613. '*************************************************************************
  1614. '** 目的:                                                                  **
  1615. '**     パスの計算 その2                                                **
  1616. '**                                                                        **
  1617. '** 引き数:                                                             **
  1618. '**     (文字列1 , 文字列2)                                            **
  1619. '** リターン値:                                                           **
  1620. '**     文字列                                                             **
  1621. '*************************************************************************
  1622. FUNCTION MakePath2 (szDir$, szFile$) STATIC AS STRING
  1623.     IF IsDBCSChar(szDir$, LEN(szDir$)) = 2 THEN
  1624.         MakePath2 = szDir$ + "\" + szFile$
  1625.     ELSE
  1626.         MakePath2 = szDir$ + szFile$
  1627.     END IF
  1628. END FUNCTION
  1629.  
  1630. '*************************************************************************
  1631. '** 目的:                                                                  **
  1632. '**     ウィンドウズの再起動                                              **
  1633. '**                                                                        **
  1634. '** 引き数:                                                             **
  1635. '**     なし                                                              **
  1636. '** リターン値:                                                           **
  1637. '**     なし                                                              **
  1638. '*************************************************************************
  1639. 'SUB RebootSystem STATIC
  1640. '    '' _mssetup.bat を調べて、システムファイルの更新の有無を確認する
  1641. '    i% = RestartListEmpty()
  1642. '
  1643. '    IF i% = 0 THEN            ''システムファイルを更新する時(今回は不要)
  1644. '        i% = ExitExecRestart()
  1645. '    ELSE                     ''更新すべきシステムファイルがない時
  1646. '        i% = ExitWindowsExec( GetWindowsDir() + "_MSRSTRT.EXE", "_MSSETUP.BAT" )
  1647. '    END IF
  1648. 'END SUB
  1649.