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