home *** CD-ROM | disk | FTP | other *** search
/ Curio City 2 / CURIO2_1.bin / net / coperweb / disk1 / msv_inst.ms_ / msv_inst.ms
Text File  |  1995-12-27  |  52KB  |  1,478 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Sample 1
  3. '*
  4. '* Setup script for Spyglass Mosaic.  This file is based upon the sample
  5. '* file "\win32s\setup\32sinst.mst" provided with the Win32 SDK (3.1 final
  6. '* release; win32s version 1.1).
  7. '*
  8. '**************************************************************************
  9. '* さらに,日本語化にあたり手を加えました。
  10. '* 変更点:・Win32s セットアップ部分を日本語Win32sSDKからのそれに差し替え
  11. '*        (・Viewerインストール部分の追加)
  12. '*         ・Win32s 1.21J とのマージを行った95/3/8 By K.Manabe
  13. '*       ・Win32s 1.25J とのマージ95/5/10 By K.Manabe
  14. '*       ・PC通信サービスとのマージをおこなった。
  15. '**************************************************************************
  16.  
  17. '$DEFINE DEBUG  ''Define for script development/debugging
  18.  
  19. '' PC通信サービス  
  20. BoolPCCommExecuted% = 0
  21. CSrcPos% = InStr(COMMAND$, "/SRC ")
  22. CDstPos% = InStr(COMMAND$, "/DST ")
  23. '' /GRP はやめた 95/2/15
  24. 'CGrpPos% = InStr(COMMAND$, "/GRP ")
  25. IF CSrcPos% = 0 THEN
  26.   CSrcPos% = Instr(COMMAND$, "/src ")
  27.   CDstPos% = InStr(COMMAND$, "/dst ")
  28. ''  CGrpPos% = InStr(COMMAND$, "/grp ")
  29. END IF
  30. ''IF CSrcPos% <> 0 And CDstPos% <> 0 And CGrpPos% <> 0 THEN
  31. IF CSrcPos% <> 0 And CDstPos% <> 0 THEN
  32.   BoolPCCommExecuted% = 1
  33.   PCComSrcDir$ = Mid$(COMMAND$, CSrcPos% + 5, CDstPos% - CSrcPos% - 6)
  34.   PCComDstDir$ = Mid$(COMMAND$, CDstPos% + 5, Len(COMMAND$) - CDstPos% - 4)
  35. ''  PCComDstDir$ = Mid$(COMMAND$, CDstPos% + 5, CGrpPos% - CDstPos% - 6)
  36. ''  PCComGrpName$ = Mid$(COMMAND$, CGrpPos% + 5, Len(COMMAND$) - CGrpPos% - 4)
  37.   COMMAND$ = Mid$(COMMAND$, 1, Len(COMMAND$) - (Len(COMMAND$) - CSrcPos%) - 1) 
  38. END IF
  39. '' PC通信サービス  
  40.  
  41. '$INCLUDE 'setupapi.inc'
  42. '$INCLUDE 'msdetect.inc'
  43.  
  44. ''****************************************************************************
  45. ''****************************************************************************
  46. ''*** Spyglass Transform Installation Dialog ID Numbers
  47. ''*** (These values must match the values in DIALOGS.H)
  48. ''****************************************************************************
  49. ''****************************************************************************
  50.  
  51. CONST WEINSTALLEDWIN32S      = 4000
  52. CONST ALREADYHAVEWIN32S      = 4100
  53. CONST KERNELHAS32            = 4200
  54. CONST ALREADYHAVEWIN32SENGLISH  = 4300    '' 英語版の Win32S のチェック用
  55. CONST ALREADYHAVEINIFILE     = 4400    '' MOSAICV.INI 
  56. CONST ALREADYHAVEMSVCRT20    = 4500     '' MSVCRT20.DLL
  57. CONST ALREADYHAVECTL3D32     = 4600    '' CTL3D32.DLL
  58. CONST TRANSFORMINSTALLED_2   = 4700
  59. CONST RESTARTINGWINDOWS_FOR_SHARE = 4800
  60. CONST ASKQUIT                = 500
  61. CONST BADPATH                = 1400
  62.  
  63. CONST LICENCE                = 101
  64. CONST LICENCE2               = 104
  65. CONST TRANSFORMWELCOME       = 100
  66. CONST TRANSFORMINSTALLED     = 200
  67. CONST TRANSFORMPATH          = 300
  68. CONST RESTARTINGWINDOWS      = 400
  69. CONST WANTSAMPLEDATA         = 600
  70. CONST INSTALLOLDER           = 700
  71.  
  72. CONST WIN32SWELCOME          = 1100
  73. CONST VERPATH                = 1200
  74.  
  75. CONST EXITFAILURE            = 2100
  76. CONST EXITQUIT               = 2200
  77. CONST EXITFAILNOTWIN31       = 2300
  78. CONST EXITFAILNOTENH         = 2400
  79. CONST EXITFAILNOTINTEL       = 2500
  80. CONST EXITEXIT               = 2600
  81. CONST EXITFAILRUNAPP         = 2700
  82.  
  83.  
  84. ''Bitmap ID
  85. CONST LOGO = 1
  86.  
  87. ''GetTempFileName flags
  88. CONST TF_FORCEDRIVE            = 128
  89.  
  90. GLOBAL DESTWIN$      ''Windows directory.
  91. GLOBAL DESTSYS$      ''Windows\System directory.
  92. GLOBAL DESTSYSNT$    ''WindowsNT\System32 directory. (Add by K.Manabe)
  93. GLOBAL DEST32S$      ''Windows\System\Win32s directory
  94. GLOBAL OLE_PROTECT%  ''Indicates whether ole2 dlls were protected from being
  95.                      '' copied.
  96. GLOBAL OLE_OLEBOOT%
  97. GLOBAL VERNUM$       '' Win32s Version Number (i.e., for v1.25 VERNUM$="125"
  98.  
  99. ''****************************************************************************
  100. ''****************************************************************************
  101. ''*** Spyglass Transform Pathname for Installation
  102. ''****************************************************************************
  103. ''****************************************************************************
  104.  
  105. GLOBAL DESTXF$     ''Spyglass Transform Directory
  106.  
  107. DECLARE SUB DoWin32sInstallation(OLEONLY%, OLE2_32%, OLE2_16%, OLE2AUTO_16%, OLE16RUNAPP%)
  108. DECLARE SUB RecoverFromCopy(szFileName$)
  109. DECLARE SUB UpdateSystemIni
  110. DECLARE FUNCTION RebootSystem(OLEONLY%) AS INTEGER
  111. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  112. DECLARE FUNCTION MakeSystemIni LIB "INIUPD.DLL" (arg1$, arg2$) AS INTEGER
  113. DECLARE FUNCTION RestartWindows LIB "INIUPD.DLL" AS INTEGER
  114. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  115. DECLARE FUNCTION PagingEnabled LIB "INIUPD.DLL" AS INTEGER
  116. DECLARE FUNCTION ShareEnabled LIB "INIUPD.DLL" AS INTEGER
  117. DECLARE FUNCTION IsWin32sLoaded LIB "INIUPD.DLL" (arg1$) AS INTEGER
  118. DECLARE FUNCTION IsRunningApp LIB "INIUPD.DLL" AS INTEGER
  119. DECLARE FUNCTION SetCuiFlags LIB "MSCUISTF.DLL" (arg1%, arg2%) AS INTEGER
  120. DECLARE FUNCTION ExitWindowsExec LIB "USER.EXE" (arg1$, arg2$) AS INTEGER
  121. DECLARE FUNCTION GetModuleHandle LIB "KRNL386.EXE" (arg1$) AS INTEGER
  122. DECLARE FUNCTION LoadLibrary LIB "KRNL386.EXE" (arg1$) AS INTEGER
  123. DECLARE SUB FreeLibrary LIB "KRNL386.EXE" (arg1%)
  124. DECLARE FUNCTION SetErrorMode LIB "KRNL386.EXE" (arg1%) AS INTEGER
  125. DECLARE FUNCTION GetTempFileName LIB "KRNL386.EXE" (drive%, prefix$, u%, filename$) AS INTEGER
  126. DECLARE SUB WriteLine LIB "INIUPD.DLL" (filename$, text$)
  127. DECLARE FUNCTION GetTempFileAt(szDir$, szPrefix$) as string
  128. DECLARE FUNCTION RegQueryValue LIB "SHELL.DLL" (arg1&, arg2$, arg3$, arg4 AS POINTER TO LONG)AS LONG
  129. DECLARE FUNCTION GetSystemCodePage LIB "INIUPD.DLL" AS INTEGER
  130. DECLARE FUNCTION WritePrivateProfileString LIB "KRNL386.EXE" (arg1$, arg2$, arg3$, arg4$) AS INTEGER
  131. '' 画面の最大化をおこなうように変更した
  132. DECLARE FUNCTION MaxTopWnd LIB "MSCUISTF.DLL" (arg1%) AS INTEGER
  133. DECLARE FUNCTION IsProgmanExec LIB "MSCUISTF.DLL" (arg1%) AS INTEGER
  134. DECLARE SUB CheckProgmanEnd LIB "MSCUISTF.DLL"
  135. DECLARE FUNCTION Which(szFileName$) AS STRING
  136. DECLARE SUB    EntryProgmanGroup(GroupName$)
  137.  
  138. INIT:
  139.     '' プログラムマネージャが起動中かを早い時期にチェックし,
  140.     '' 起動していない場合に起動しておく.
  141.     '' もし,CreateProgman の実行の直前だと間に合わない可能性がある.
  142.     IF IsProgmanExec(HwndFrame()) = 0 Then
  143.         run "progman.exe", NOWAIT
  144.     END IF
  145.  
  146.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  147.     HELPPROC$ = "FHelpDlgProc"        ''Help dialog procedure
  148.     szOldVer$ ="1.00.000     "        ''Reserve space in string for version
  149.     OLEONLY% = 0
  150.     OLE2_16% = 0
  151.     OLE2AUTO_16% = 0
  152.     OLE16RUNAPP% = 0
  153.     OLE_PROTECT% = 0
  154.     OLE_OLEBOOT% = 0
  155.  
  156.     BoolWeInstalledWin32s% = 0
  157.     BoolWeSearchedWin32sEnglish% = 0    '' 英語版をチェックするため
  158.     BoolKernelSupports32% = 0
  159.     BoolKernelChicago%=0        '' Win95をチェックする
  160.  
  161.     ''    さまざまな初期設定
  162.     GLOBAL gBoolTrialVersion%
  163.     GLOBAL gBoolCoperaWeb%
  164.     GLOBAL gMosaicName$
  165.     GLOBAL gExeName$
  166.     GLOBAL gTrialName$
  167.     GLOBAL gGroupName$
  168.     GLOBAL gGroupFileName$
  169.  
  170.     BoolCreateProgmanItem%=1    '' プログラムマネージャに登録するか
  171.     gBoolCoperaWeb%=1            '' CoperaWeb 関連ならTRUE
  172.     gBoolTrialVersion%=1        '' お試し版ならTRUE    
  173.  
  174.     gMosaicName$="COPERAWEB"
  175.     TitleName$="COPERAWEB (Ver1.0)"
  176.     Win32sSectionName$="CoperaWeb"
  177.  
  178.     CreateDirName$="COPERAWE"
  179.     IniFileName$="COPERAWE.INI"
  180.     InfFileName$="COPERAWE.INF"
  181.     gExeName$="COPERAWE.EXE"
  182.  
  183.     IF gBoolTrialVersion% = 1 THEN
  184.         gTrialName$ =" お試し版"
  185.         gGroupName$ = "コペラグラス"
  186.         gGroupFileName$ = "コペラグ.GRP"
  187.     ELSE
  188.         gGroupName$ = "コペラグラス"
  189.         gGroupFileName$ = "コペラグ.GRP"
  190.     END IF
  191.     '' PC通信サービスならグループなどを作成しない。
  192.     IF BoolPCCommExecuted% = 1 THEN
  193.         BoolCreateProgmanItem%=0
  194.     END IF
  195.     ''    さまざまな初期設定の終わり
  196.  
  197.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  198.  
  199.     SetBitmap CUIDLL$, LOGO
  200.     SetTitle TitleName$ + "セットアップ プログラム"
  201.     i% = MaxTopWnd(HwndFrame())
  202.  
  203.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  204.     IF szInf$ = "" THEN
  205.     szInf$ = GetSymbolValue("STF_CWDDIR") + InfFileName$
  206.     END IF
  207.     ReadInfFile szInf$
  208.  
  209. ''****************************************************************************
  210. ''****************************************************************************
  211. ''***
  212. ''*** Spyglass Transform Greeting.
  213. ''***
  214. ''****************************************************************************
  215. ''****************************************************************************
  216.     '' LICENCE, TRANSFORMWELCOME でERROR命令を実行するので、
  217.     '' ON ERROR を追加した.
  218.     ON ERROR GOTO ERRNORMALWIN32S
  219.  
  220. LICENCE:
  221.     IF gBoolTrialVersion% = 1 THEN
  222.         sz$ = UIStartDlg(CUIDLL$, LICENCE2, "FLicenceDlgProc", 0, "")
  223.  
  224.         '' プログラムマネージャとのDDE接続の切断
  225.         ''IsProgmanExec()と少し離している.
  226.         CheckProgmanEnd     
  227.  
  228.         IF sz$ = "CONTINUE" THEN
  229.         UIPop 1
  230.         ELSE
  231.         GOSUB ASKQUIT
  232.         GOTO LICENCE
  233.         END IF
  234.     END IF
  235.  
  236. TRANSFORMWELCOME:
  237.     sz$ = UIStartDlg(CUIDLL$, TRANSFORMWELCOME, "FInfoDlgProc", 0, "")
  238.  
  239.     '' プログラムマネージャとのDDE接続の切断
  240.     ''IsProgmanExec()と少し離している.
  241.     CheckProgmanEnd     
  242.  
  243.     IF sz$ = "CONTINUE" THEN
  244.     UIPop 1
  245.     ELSE
  246.     UIPop 1
  247.     GOSUB ASKQUIT
  248.     GOTO TRANSFORMWELCOME
  249.     END IF
  250.  
  251.     szXFNewVer$ = GetIniKeyString(SrcDir$ + IniFileName$, "Version", "Build")
  252.     szXFRelease$ = GetIniKeyString(SrcDir$ + IniFileName$, "Version", "Release")
  253.  
  254.  
  255.  
  256. ''****************************************************************************
  257. ''****************************************************************************
  258. ''***
  259. ''*** Determine if Win32s is necessary.
  260. ''***
  261. ''****************************************************************************
  262. ''****************************************************************************
  263.  
  264.     ON ERROR GOTO ERRNORMALWIN32S
  265.  
  266.     WIN32SVER$ = MID$(GetSectionKeyVersion("WindowsSystem", "win32s16"), 1, 4)
  267.     VERNUM$ = MID$(WIN32SVER$, 1, 1) + MID$(WIN32SVER$, 3 , 2)
  268.     
  269.     DESTWIN$ = GetWindowsDir()
  270.     DESTSYS$ = GetWindowsSysDir()
  271.     DESTSYSNT$ = GetWindowsDir() + "SYSTEM32\"
  272.     DEST32S$ = DESTSYS + "WIN32S\"
  273.  
  274.  
  275. ''****************************************************************************
  276. ''*** Determine if computer system is capable is using Win32s.
  277. ''****************************************************************************
  278.  
  279. CHECK:
  280.  
  281.     '' Can not run on versions less than 3.10.
  282.     IF GetWindowsMajorVersion < 3 THEN
  283.     ExitCode% = EXITFAILNOTWIN31
  284.     GOTO QUITWIN32S
  285.     END IF
  286.     IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 10 THEN
  287.     ExitCode% = EXITFAILNOTWIN31
  288.     GOTO QUITWIN32S
  289.     END IF
  290.     '' Check that we are not runnig on Chicago, including pre-released
  291.     '' Chicago versions.
  292.     IF GetWindowsMajorVersion * 100 + GetWindowsMinorVersion > 350 THEN
  293.     BoolKernelChicago%=1
  294.     GOTO KERNEL32
  295.     END IF
  296.     IF GetWindowsMode < 2  THEN
  297.     IF OnWindowsNT() THEN
  298.        ExitCode% = EXITFAILNOTINTEL    '' Running on Windows NT (on RISC)
  299.     ELSE
  300.        ExitCode% = EXITFAILNOTENH    '' Standard Mode Windows
  301.     END IF
  302.     GOTO QUITWIN32S
  303.     END IF
  304.     IF OnWindowsNT() THEN
  305.     GOTO KERNEL32
  306.     END IF
  307.  
  308. ''****************************************************************************
  309. ''*** See if our version is newer than the one on the system or the one on the
  310. ''*** system was not completely installed.
  311. ''****************************************************************************
  312.  
  313.     if IsRunningApp() <> 0 THEN
  314.         ExitCode% = EXITFAILRUNAPP
  315.         GOTO QUITWIN32S
  316.     END IF
  317.  
  318.     '' INFから情報を取るにはバージョンのチェックを行わなければならないが,
  319.     '' チェックすると英語版のWin32sのときに上書きすることが出来ない。
  320.     '' ゆえに,Win32s 1.15に戻す。
  321.     '' Get version of Win32s to be installed from version info in INF file
  322.     '' szNewVer$ = GetSectionKeyVersion("WindowsSystem", "win32s16")
  323.  
  324.     '' Get version of Win32s to be installed from version info in file
  325.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  326.     szNewVer$ = GetVersionOfFile(SrcDir$ + "WIN32S16.DLL" )
  327.  
  328.  
  329.     '' See if OLE is included.
  330.  
  331.     OLEINCLUDED% = DoesFileExist( GetSymbolValue("STF_SRCDIR") + "OLE2THK.DL_", femExists )
  332.  
  333.     IF OLEINCLUDED% = 1 THEN
  334.         i% = WritePrivateProfileString("CoCreateGuid", "ForceRandom", "1", "compobj.ini")
  335.  
  336.         '' See whether one of the OLE 16 bit components is loaded.
  337.         IF GetModulehandle("compobj") <> 0 THEN
  338.             OLE16RUNAPP% = 1
  339.             GOTO GetOleVersionWin32s
  340.         END IF
  341.         IF GetModuleHandle("ole2") <> 0 THEN
  342.             OLE16RUNAPP% = 1
  343.             GOTO GetOleVersionWin32s
  344.         END IF
  345.         IF GetModuleHandle("ole2prox") <> 0 THEN
  346.             OLE16RUNAPP% = 1
  347.             GOTO GetOleVersionWin32s
  348.         END IF
  349.         IF GetModuleHandle("ole2conv") <> 0 THEN
  350.             OLE16RUNAPP% = 1
  351.             GOTO GetOleVersionWin32s
  352.         END IF
  353.         IF GetModuleHandle("storage") <> 0 THEN
  354.             OLE16RUNAPP% = 1
  355.             GOTO GetOleVersionWin32s
  356.         END IF
  357.         IF GetModuleHandle("ole2nls") <> 0 THEN
  358.             OLE16RUNAPP% = 1
  359.             GOTO GetOleVersionWin32s
  360.         END IF
  361.         IF GetModuleHandle("ole2disp") <> 0 THEN
  362.             OLE16RUNAPP% = 1
  363.             GOTO GetOleVersionWin32s
  364.         END IF
  365.         IF GetModuleHandle("typelib") <> 0 THEN
  366.             OLE16RUNAPP% = 1
  367.             GOTO GetOleVersionWin32s
  368.         END IF
  369.  
  370. GetOleVersionWin32s:
  371.         szOleNewVer$ = GetSectionKeyVersion("OleWindowsSystemWin32s", "ole2thk")
  372.  
  373.         '' Get version of currently installed OLE32 from version info of
  374.         '' ole2thk file
  375.         szOleOldVer$ = GetVersionOfFile( DESTSYS$ + "WIN32S\OLE2THK.DLL" )
  376.  
  377.         szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "COMPOBJ.DLL" )
  378.         szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "compobj")
  379.         IF (szOle16NewVer$ > szOle16OldVer$) THEN
  380.             OLE2_16% = 1
  381.         END IF
  382.  
  383.         szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2.DLL" )
  384.         szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2")
  385.         IF (szOle16NewVer$ > szOle16OldVer$) THEN
  386.             OLE2_16% = 1
  387.         END IF
  388.  
  389.         szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2PROX.DLL" )
  390.         szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2prox")
  391.         IF (szOle16NewVer$ > szOle16OldVer$) THEN
  392.             OLE2_16% = 1
  393.         END IF
  394.  
  395.         szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "STORAGE.DLL" )
  396.         szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "storage")
  397.         IF (szOle16NewVer$ > szOle16OldVer$) THEN
  398.             OLE2_16% = 1
  399.         END IF
  400.  
  401.         szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2CONV.DLL" )
  402.         szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2conv")
  403.         IF (szOle16NewVer$ > szOle16OldVer$) THEN
  404.             OLE2_16% = 1
  405.         END IF
  406.  
  407.         szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2NLS.DLL" )
  408.         szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2nls")
  409.         IF (szOle16NewVer$ > szOle16OldVer$) THEN
  410.             OLE2AUTO_16% = 1
  411.         END IF
  412.  
  413.         szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2DISP.DLL" )
  414.         szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2disp")
  415.         IF (szOle16NewVer$ > szOle16OldVer$) THEN
  416.             OLE2AUTO_16% = 1
  417.         END IF
  418.  
  419.         szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "TYPELIB.DLL" )
  420.         szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "typelib")
  421.         IF (szOle16NewVer$ > szOle16OldVer$) THEN
  422.             OLE2AUTO_16% = 1
  423.         END IF
  424.  
  425.     END IF
  426.  
  427.     OLE2_32% = OLEINCLUDED%
  428.  
  429.     '' Check if Win32s is partially installed
  430.     sz$ = GetIniKeyString (DESTSYS$ + "WIN32S.INI", "Win32s", "Setup")
  431.     '' If WIN32S.INI specifies Win32s Setup=0, then force complete Win32s file overwrite
  432.     IF sz$ = "0" THEN
  433.     GOTO INSTALLWIN32S
  434.     END IF
  435.     '' If WIN32S.INI is missing, try and reinstall Win32s files/recreate WIN32S.INI
  436.     IF sz$ <> "1" THEN
  437.     GOTO INSTALLWIN32S
  438.     END IF
  439.  
  440.     '' 英語版の Win32s がインストールされているかどうかのチェック
  441.     tmpCP$ = GetIniKeyString (DESTSYS$ + "WIN32S.INI", "Nls", "AnsiCP")
  442.     IF tmpCP$ <> "932" THEN
  443.     GOTO ALREADYHAVEWIN32SENGLISH
  444.     END IF 
  445.  
  446.     '' If Win32s is already installed, get running version number
  447.     i% = DoesFileExist( DESTSYS$ + "W32SYS.DLL", femExists )
  448.     IF i% = 1 THEN
  449.     i% = IsWin32sLoaded( szOldVer$ )
  450.     '' MSKK のバグのためこのようなチェックを行わなければ
  451.     '' ならない。
  452.         szJVer$ = GetVersionOfFile( DESTSYS$ + "WIN32S16.DLL" )
  453.     IF szJVer$ <> szOldVer$ THEN
  454.         szOldVer$ = szJVer$
  455.     END IF
  456.     END IF
  457.  
  458.     IF i% = 0 THEN
  459.     GOTO INSTALLWIN32S
  460.     END IF
  461.     IF szNewVer$ = szOldVer$ THEN
  462.     GOTO ALREADYHAVEWIN32S
  463.     END IF
  464.     IF szNewVer$ > szOldVer$ THEN
  465.     GOTO INSTALLWIN32S
  466.     END IF
  467.  
  468.    IF OLEINCLUDED% = 1 THEN
  469.  
  470.    OLE2_32% = 0
  471.  
  472.     IF szNewVer$ = szOldVer$ THEN
  473.         '' Compare OLE32 version and versions of each of OLE16 libraries.
  474.         sz$ = GetIniKeyString (DESTSYS$ + "WIN32S.INI", "OLE", "Setup")
  475.         '' If WIN32S.INI specifies OLE2 Setup=0, then force OLE2 file overwrite
  476.         IF ((sz$ <> "1") OR (szOleNewVer$ > szOleOldVer$)) THEN
  477.             OLEONLY% = 1
  478.             OLE2_32% = 1
  479.             GOTO INSTALLWIN32S
  480.         END IF
  481.  
  482.     IF OLE2_16% OR OLE2AUTO_16 THEN
  483.             OLEONLY% = 1
  484.             GOTO INSTALLWIN32S
  485.         END IF
  486.  
  487.             szValue$ = STRING$(20, 33)
  488.             cb& = len(szValue$)
  489.             i% = RegQueryValue (1, "Software\Microsoft\OLE2\UnknownUserType", szValue$, VARPTR(cb))
  490.             IF szValue$ = "Unknown" THEN
  491.                 OLEONLY% = 1
  492.                 OLE2_32% = 1
  493.                 GOTO INSTALLWIN32S
  494.             END IF
  495.         END IF  
  496.     END IF
  497.  
  498.     GOTO ALREADYHAVEWIN32S
  499.  
  500.  
  501. ''****************************************************************************
  502. ''****************************************************************************
  503. ''***
  504. ''*** We must attempt to install Win32s.
  505. ''***
  506. ''****************************************************************************
  507. ''****************************************************************************
  508.  
  509. INSTALLWIN32S:
  510.  
  511.     i% = SetCuiFlags(OLEONLY%, OLE16RUNAPP%)
  512.     sz$ = UIStartDlg(CUIDLL$, WIN32SWELCOME, "FInfoDlgProc", 0, "")
  513.     IF sz$ = "CONTINUE" THEN
  514.     UIPop 1
  515.     ELSE
  516.         UIPop 1
  517.     GOSUB ASKQUIT
  518.     GOTO INSTALLWIN32S
  519.     END IF
  520.  
  521.  
  522. GETWIN32SPATH:
  523.     IF PagingEnabled() = 0 THEN
  524.     i% = DoMsgBox("コントロールパネルのエンハンスド モードを使用して,スワップ ファイルの設定を行ってください。", "Win32s の仮想記憶", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  525.     ExitCode% = EXITEXIT               '' Enhanced mode but not paging
  526.     GOTO QUITWIN32S
  527.     END IF
  528.  
  529.     IF ShareEnabled() = 0 THEN
  530.     ShareComPath$ = ENVIRON$("DOSDIR")
  531.         IF MID$(ShareComPath$, LEN(ShareComPath$), 1) <> "\" THEN
  532.             ShareComPath$ = ShareComPath$ + "\"
  533.         END IF
  534.     IF ShareComPath$ = "\" THEN
  535.         ShareComPath$ = Which("SHARE.EXE")
  536.     ELSEIF DoesFileExist( ShareComPath$ + "SHARE.EXE", femExists) = 0 THEN
  537.         ShareComPath$ = Which("SHARE.EXE")
  538.     END IF
  539.  
  540.     IF ShareComPath$ <> "" THEN
  541.         sz$ = UIStartDlg(CUIDLL$, RESTARTINGWINDOWS_FOR_SHARE, "FInfoDlgProc", 0, "")
  542.         i% = ExitWindowsExec( ShareComPath$ + "SHARE.EXE" , "")
  543.         '' ここには来ない。
  544.     END IF
  545.  
  546.         i% = DoMsgBox( "ファイル-シェアリングが有効でなければなりません。Windows を起動する前に SHARE.EXE を起動してください。", "Win32s セットアップ", MB_TASKMODAL+MB_ICONEXCLAMATION+MB_OK)
  547.     ExitCode% = EXITEXIT              '' SHARE not loaded
  548.     GOTO QUITWIN32S
  549.     END IF
  550.  
  551.     ''INSTALLWIN32Sのラベルから移動した。
  552.     '' EMosaic Ver2.0 とのマージ
  553.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  554.     BoolNeedCopy%=0
  555.     ClearCopyList
  556.  
  557.     IF DoesFileExist(DESTSYS$ + "MSVCRT20.DLL", femExists) THEN
  558.     '' ファイルが同じ日付ならコピーしないようにした
  559.         IF GetDateOfFile(DESTSYS$ + "MSVCRT20.DLL") <> GetDateOfFile(SrcDir$ + "MSVCRT20.DL_") THEN
  560.         sz$ = UIStartDlg(CUIDLL$, ALREADYHAVEMSVCRT20, "FInfoDlgProc", 0, "")
  561.         IF sz$ = "CONTINUE" THEN
  562.             UIPop 1
  563.         ELSE
  564.             GOTO QUITTRANSFORMINSTALL
  565.             END IF
  566.             BoolNeedCopy%=1
  567.             AddSectionFilesToCopyList "msvcrt20", SrcDir$, DESTSYS$
  568.     END IF
  569.     ELSE
  570.         BoolNeedCopy%=1
  571.         AddSectionFilesToCopyList "msvcrt20", SrcDir$, DESTSYS$
  572.     END IF
  573.     IF DoesFileExist(DESTSYS$ + "CTL3D32.DLL", femExists) THEN
  574.     '' ファイルが同じ日付ならコピーしないようにした
  575.         IF GetDateOfFile(DESTSYS$ + "CTL3D32.DLL") <> GetDateOfFile(SrcDir$ + "CTL3D32.DL_") THEN
  576.         sz$ = UIStartDlg(CUIDLL$, ALREADYHAVECTL3D32, "FInfoDlgProc", 0, "")
  577.         IF sz$ = "CONTINUE" THEN
  578.             UIPop 1
  579.         ELSE
  580.             GOTO QUITTRANSFORMINSTALL
  581.             END IF
  582.             BoolNeedCopy%=1
  583.             AddSectionFilesToCopyList "ctl3d32", SrcDir$, DESTSYS$
  584.     END IF
  585.     ELSE
  586.         BoolNeedCopy%=1
  587.         AddSectionFilesToCopyList "ctl3d32", SrcDir$, DESTSYS$
  588.     END IF
  589.     IF BoolNeedCopy% = 1 THEN
  590.         CopyFilesInCopyList
  591.     END IF
  592.  
  593.     SetSymbolValue "EditTextIn", DESTSYS$
  594.     SetSymbolValue "EditFocus", "END"
  595.  
  596. GETPATHL1:
  597.     sz$ = UIStartDlg(CUIDLL$, VERPATH, "FDispDlgProc", 0, "")
  598.  
  599.     IF sz$ = "CONTINUE" THEN
  600.     IF IsDirWritable(DESTSYS$) = 0 THEN
  601.         GOSUB BADPATH
  602.         GOTO GETPATHL1
  603.     END IF
  604.     UIPop 1
  605.     ELSEIF sz$ = "REACTIVATE" THEN
  606.     UIPop 1
  607.     GOTO GETPATHL1
  608.     ELSEIF sz$ = "BACK" THEN
  609.     UIPop 1
  610.     GOTO INSTALLWIN32S
  611.     ELSE
  612.     UIPop 1
  613.     GOSUB ASKQUIT
  614.     GOTO GETPATHL1
  615.     END IF
  616.  
  617. COPYFILES:
  618.     IF OLEONLY% = 0 THEN
  619.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "0", cmoOverwrite
  620.     END IF
  621.     IF OLE2_32% = 1 THEN
  622.         CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "OLE", "Setup", "0", cmoOverwrite
  623.     END IF
  624.  
  625.     '' Indicate Win32s install failure until all files known to be copied.
  626.     ExitCode% = EXITFAILURE
  627.     ERR = 0
  628.  
  629.     CreateDir DEST32S$, cmoNone
  630.     DoWin32sInstallation OLEONLY%, OLE2_32%, OLE2_16%, OLE2AUTO_16%, OLE16RUNAPP%
  631.     UpdateSystemIni
  632.  
  633.     '' Terminate if unhandled fatal error
  634.     IF ERR <> 0 THEN
  635.     GOTO QUITWIN32S
  636.     END IF
  637.  
  638.     IF OLEONLY% = 0 THEN
  639.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "1", cmoOverwrite
  640.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Version", szNewVer$, cmoOverwrite
  641.         CreateIniKeyValue DESTSYS$ + "WIN32S.INI","Nls","AnsiCP",STR$(GetSystemCodePage()), cmoOverwrite
  642.     END IF
  643.     IF OLE2_32% = 1 THEN
  644.         CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "OLE", "Setup", "1", cmoOverwrite
  645.         CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "OLE", "Version", szOleNewVer, cmoOverwrite
  646.     END IF
  647.  
  648.     BoolWeInstalledWin32s% = 1
  649.     GOTO INSTALLTRANSFORM
  650.  
  651.  
  652. KERNEL32:
  653.     '
  654.     ' Windows95 はMSVCRT20.DLL を持っており,CTL3D32.DLLは必要ない.95/5/10
  655.     '
  656.     IF BoolKernelChicago% = 0 THEN
  657.         '' EMosaic Ver2.0 とのマージ
  658.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  659.         BoolNeedCopy%=0
  660.         ClearCopyList
  661.  
  662.         IF DoesFileExist(DESTSYSNT$ + "MSVCRT20.DLL", femExists) THEN
  663.         '' ファイルが同じ日付ならコピーしないようにした
  664.             IF GetDateOfFile(DESTSYSNT$ + "MSVCRT20.DLL") <> GetDateOfFile(SrcDir$ + "MSVCRTNT.DL_") THEN
  665.             sz$ = UIStartDlg(CUIDLL$, ALREADYHAVEMSVCRT20, "FInfoDlgProc", 0, "")
  666.             IF sz$ = "CONTINUE" THEN
  667.                 UIPop 1
  668.             ELSE
  669.                 GOTO QUITTRANSFORMINSTALL
  670.                 END IF
  671.                 BoolNeedCopy%=1
  672.                 AddSectionFilesToCopyList "msvcrtnt", SrcDir$, DESTSYSNT$
  673.         END IF
  674.         ELSE
  675.             BoolNeedCopy%=1
  676.             AddSectionFilesToCopyList "msvcrtnt", SrcDir$, DESTSYSNT$
  677.         END IF
  678.         IF DoesFileExist(DESTSYSNT$ + "CTL3D32.DLL", femExists) THEN
  679.         '' ファイルが同じ日付ならコピーしないようにした
  680.             IF GetDateOfFile(DESTSYSNT$ + "CTL3D32.DLL") <> GetDateOfFile(SrcDir$ + "CTL3DNT.DL_") THEN
  681.             sz$ = UIStartDlg(CUIDLL$, ALREADYHAVECTL3D32, "FInfoDlgProc", 0, "")
  682.             IF sz$ = "CONTINUE" THEN
  683.                 UIPop 1
  684.             ELSE
  685.                 GOTO QUITTRANSFORMINSTALL
  686.                 END IF
  687.                 BoolNeedCopy%=1
  688.                 AddSectionFilesToCopyList "ctl3dnt", SrcDir$, DESTSYSNT$
  689.         END IF
  690.         ELSE
  691.             BoolNeedCopy%=1
  692.             AddSectionFilesToCopyList "ctl3dnt", SrcDir$, DESTSYSNT$
  693.         END IF
  694.         IF BoolNeedCopy% = 1 THEN
  695.             CopyFilesInCopyList
  696.         END IF
  697.     END IF
  698.  
  699.     BoolKernelSupports32% = 1
  700.     GOTO INSTALLTRANSFORM
  701.  
  702. ALREADYHAVEWIN32SENGLISH:
  703.     BoolWeSearchedWin32sEnglish% = 1
  704.     '' ALREADYHAVEWIN32S へ続く
  705.  
  706. ALREADYHAVEWIN32S:
  707.     '' EMosaic Ver2.0 とのマージ
  708.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  709.     BoolNeedCopy%=0
  710.     ClearCopyList
  711.  
  712.     IF DoesFileExist(DESTSYS$ + "MSVCRT20.DLL", femExists) THEN
  713.     '' ファイルが同じ日付ならコピーしないようにした
  714.         IF GetDateOfFile(DESTSYS$ + "MSVCRT20.DLL") <> GetDateOfFile(SrcDir$ + "MSVCRT20.DL_") THEN
  715.         sz$ = UIStartDlg(CUIDLL$, ALREADYHAVEMSVCRT20, "FInfoDlgProc", 0, "")
  716.         IF sz$ = "CONTINUE" THEN
  717.             UIPop 1
  718.         ELSE
  719.             GOTO QUITTRANSFORMINSTALL
  720.             END IF
  721.             BoolNeedCopy%=1
  722.             AddSectionFilesToCopyList "msvcrt20", SrcDir$, DESTSYS$
  723.     END IF
  724.     ELSE
  725.         BoolNeedCopy%=1
  726.         AddSectionFilesToCopyList "msvcrt20", SrcDir$, DESTSYS$
  727.     END IF
  728.     IF DoesFileExist(DESTSYS$ + "CTL3D32.DLL", femExists) THEN
  729.     '' ファイルが同じ日付ならコピーしないようにした
  730.         IF GetDateOfFile(DESTSYS$ + "CTL3D32.DLL") <> GetDateOfFile(SrcDir$ + "CTL3D32.DL_") THEN
  731.         sz$ = UIStartDlg(CUIDLL$, ALREADYHAVECTL3D32, "FInfoDlgProc", 0, "")
  732.         IF sz$ = "CONTINUE" THEN
  733.             UIPop 1
  734.         ELSE
  735.             GOTO QUITTRANSFORMINSTALL
  736.             END IF
  737.             BoolNeedCopy%=1
  738.             AddSectionFilesToCopyList "ctl3d32", SrcDir$, DESTSYS$
  739.     END IF
  740.     ELSE
  741.         BoolNeedCopy%=1
  742.         AddSectionFilesToCopyList "ctl3d32", SrcDir$, DESTSYS$
  743.     END IF
  744.     IF BoolNeedCopy% = 1 THEN
  745.         CopyFilesInCopyList
  746.     END IF
  747.  
  748.     BoolWeInstalledWin32s% = 0
  749.     GOTO INSTALLTRANSFORM
  750.  
  751.  
  752. ''****************************************************************************
  753. ''****************************************************************************
  754. ''***
  755. ''*** Win32s Error Handling.
  756. ''***
  757. ''****************************************************************************
  758. ''****************************************************************************
  759.  
  760. QUITWIN32S:
  761.     '' Install error handler for final message box routines
  762.     ON ERROR GOTO ERRQUIT
  763.     IF ERR = 0 THEN
  764.     dlg% = ExitCode%
  765.     ELSEIF ERR = STFQUIT THEN
  766.         IF (OLE_PROTECT% = 1) THEN
  767.             '' Free all previously loaded libraries
  768.             FreeLibrary GetModuleHandle("compobj")
  769.             FreeLibrary GetModuleHandle("ole2")
  770.             FreeLibrary GetModuleHandle("ole2prox")
  771.             FreeLibrary GetModuleHandle("ole2conv")
  772.             FreeLibrary GetModuleHandle("storage")
  773.             FreeLibrary GetModuleHandle("ole2nls")
  774.             FreeLibrary GetModuleHandle("ole2disp")
  775.             FreeLibrary GetModuleHandle("typelib")
  776.         END IF
  777.     dlg% = EXITQUIT
  778.     ExitCode% = EXITQUIT
  779.     ELSE
  780.     dlg% = EXITFAILURE
  781.     ExitCode% = EXITQUIT
  782.     END IF
  783.  
  784. QUITL1:
  785.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  786.     IF sz$ = "REACTIVATE" THEN
  787.     GOTO QUITL1
  788.     END IF
  789.     UIPop 1
  790.  
  791.     '' PC通信サービス  
  792.     IF BoolPCCommExecuted% = 1 THEN
  793.     run PCComSrcDir$ + "main2.exe /E MOSAICV", NOWAIT
  794.     END IF
  795.     '' PC通信サービス  
  796.  
  797.     END
  798.  
  799. '' Fatal error handler for error message routine
  800. ERRQUIT:
  801.     i% = DoMsgBox("セットアップ ディスクが不正です。", "セットアップ メッセージ", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  802.  
  803.     '' PC通信サービス  
  804.     IF BoolPCCommExecuted% = 1 THEN
  805.     run PCComSrcDir$ + "main2.exe /E MOSAICV", NOWAIT
  806.     END IF
  807.     '' PC通信サービス  
  808.  
  809.     END
  810.  
  811. '' Bypass run-time errors. Let final dialog box display fatal error message.
  812. ERRNORMALWIN32S:
  813.     '' Check if user cancelled setup
  814.     IF ERR = STFQUIT THEN
  815.     GOTO QUITWIN32S
  816.     END IF
  817.  
  818.     '' エラー発生時にWin32sのインストールを飛ばし,MosaicViewのインストールを継続するのはおかしいので
  819.     '' RESUMRE NEXT をコメントアウトした
  820.     '' RESUME NEXT
  821.     GOTO QUITWIN32S
  822.  
  823.  
  824. ''****************************************************************************
  825. ''****************************************************************************
  826. ''***
  827. ''*** Start of Spyglass Transform Section.
  828. ''***
  829. ''****************************************************************************
  830. ''****************************************************************************
  831.  
  832. INSTALLTRANSFORM:
  833.     ON ERROR GOTO ERRNORMALTRANSFORM
  834.  
  835.     ''***
  836.     ''*** Tell them the status of Win32s installation and ask if they
  837.     ''*** still want to install Transform.
  838.     ''***
  839.  
  840.     IF BoolWeInstalledWin32s% = 1 THEN
  841.     sz$ = UIStartDlg(CUIDLL$, WEINSTALLEDWIN32S, "FInfoDlgProc", 0, "")
  842.     ELSE
  843.     IF BoolKernelSupports32% = 1 THEN
  844.         sz$ = UIStartDlg(CUIDLL$, KERNELHAS32, "FInfoDlgProc", 0, "")
  845.     ELSE
  846.         IF BoolWeSearchedWin32sEnglish% = 1 THEN
  847.             sz$ = UIStartDlg(CUIDLL$, ALREADYHAVEWIN32SENGLISH, "FInfoDlgProc", 0, "")
  848.         ELSE
  849.             sz$ = UIStartDlg(CUIDLL$, ALREADYHAVEWIN32S, "FInfoDlgProc", 0, "")
  850.         END IF
  851.     END IF
  852.     END IF
  853.     '' 上書きモードを追加しました。
  854.     '' 94/11/11 Manabe
  855.     IF sz$ = "OVERWRITE" THEN
  856.     UIPop 1
  857.     GOTO GETWIN32SPATH
  858.     END IF
  859.  
  860.     IF sz$ = "CONTINUE" THEN
  861.     UIPop 1
  862.     ELSE
  863.     GOTO QUITTRANSFORMINSTALL
  864.     END IF
  865.  
  866. SAMPLEDATA:
  867.  
  868.     ''***
  869.     ''*** Ask if they want sample data installed.
  870.     ''***
  871.  
  872. ''***    DoSampleData = 0
  873. ''***    sz$ = UIStartDlg(CUIDLL$, WANTSAMPLEDATA, "FInfoDlgProc", 0, "")
  874. ''***    IF sz$ = "CONTINUE" THEN
  875. ''***    UIPop 1
  876. ''***    DoSampleData = 1
  877. ''***    ELSEIF sz$ = "EXIT" THEN
  878. ''***    GOTO QUITTRANSFORMINSTALL
  879. ''***    ELSE
  880. ''***    UIPop 1            ''*** Skip Sample Data
  881. ''***    END IF
  882.  
  883.  
  884. GETTRANSFORMPATH:
  885.  
  886. ''*** Get Pathname
  887.  
  888.     DESTXF$ = MID$(DESTSYS$,1,3) + "WIN32APP\" + CreateDirName$    
  889.     SetSymbolValue "EditTextIn", DESTXF$
  890.     SetSymbolValue "EditFocus", "END"
  891.  
  892. '' PC通信サービス
  893. IF BoolPCCommExecuted% = 1 THEN
  894.   DESTXF$ = PCComDstDir$
  895.   IF MID$(DESTXF$, LEN(DESTXF$), 1) <> "\" THEN
  896.     DESTXF$ = DESTXF$ + "\"
  897.   END IF
  898.   DESTXF$ = DESTXF$ + CreateDirName$ + "\" 
  899.   GOTO CHECKTRANSFORMVERSION
  900. END IF
  901. '' PC通信サービス
  902.  
  903. GETTRANSFORMPATHL1:
  904.  
  905. ''*** Get Pathname Loop (get until valid)
  906.  
  907.     sz$ = UIStartDlg(CUIDLL$, TRANSFORMPATH, "FEditDlgProc", 0, "")
  908.  
  909.     IF sz$ = "CONTINUE" THEN
  910.     DESTXF$ = GetSymbolValue("EditTextOut")
  911.  
  912.     IF MID$(DESTXF$, LEN(DESTXF$), 1) <> "\" THEN
  913.         DESTXF$ = DESTXF$ + "\"
  914.     END IF
  915.     ''Validate new path.
  916.     IF IsDirWritable(DESTXF$) = 0 THEN
  917.         GOSUB BADPATH
  918.         GOTO GETTRANSFORMPATHL1
  919.     END IF
  920.     UIPop 1
  921.  
  922.     GOTO CHECKTRANSFORMVERSION
  923.     ELSEIF sz$ = "REACTIVATE" THEN
  924.     GOTO GETTRANSFORMPATHL1
  925.     ELSEIF sz$ = "EXIT" THEN
  926.     UIPop 1
  927.     GOTO QUITTRANSFORMINSTALL
  928.     END IF
  929.  
  930. CHECKTRANSFORMVERSION:
  931.  
  932. ''***
  933. ''*** Check our version number versus version number of previously
  934. ''*** installed version (if present).
  935. ''***
  936.  
  937. ''*** We expect the .INI file to contain something like this:
  938. ''***
  939. ''***    [Version]
  940. ''***    Build=3.0.0.0
  941. ''***    Release=3.0a1
  942. ''***
  943. ''*** We use the build-version in the version check.
  944. ''*** We use the release-version in naming the PIF's.
  945. ''***
  946.  
  947.     szXFOldVer$ = GetIniKeyString(DESTXF$ + IniFileName$, "Version", "Build")
  948.     IF szXFOldVer$ = "" or LEN(szXFOldVer$) = 0 THEN
  949.     GOTO COPYTRANSFORM
  950.     END IF
  951.  
  952.     IF szXFNewVer$ < szXFOldVer$ THEN
  953.     sz$ = UIStartDlg(CUIDLL$, INSTALLOLDER, "FInfoDlgProc", 0, "")
  954.     IF sz$ = "CONTINUE" THEN
  955.         UIPop 1
  956.     ELSE
  957.         GOTO QUITTRANSFORMINSTALL
  958.     END IF
  959.     END IF
  960.  
  961.     IF szXFOldVer$ <> "" THEN
  962.     sz$ = UIStartDlg(CUIDLL$, ALREADYHAVEINIFILE, "FInfoDlgProc", 0, "")
  963.     IF sz$ = "CONTINUE" THEN
  964.         UIPop 1
  965.         RemoveFile DESTXF$ + "INI.BAK", cmoNone
  966.     ELSE
  967.         GOTO QUITTRANSFORMINSTALL
  968.     END IF
  969.     END IF
  970.  
  971.  
  972. COPYTRANSFORM:
  973.  
  974. ''*** Copy Spyglass Transform onto hard disk 
  975.  
  976.     ClearCopyList
  977.     CreateDir DESTXF$, cmoNone
  978.  
  979.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  980.  
  981.     ERR = 0
  982.     AddSectionFilesToCopyList "Win32appGuitar", SrcDir$, DESTXF$
  983.  
  984.     DESTXFHELP$ = DESTXF$ + "HELP"
  985.     CreateDir DESTXFHELP$, cmoNone
  986.     AddSectionFilesToCopyList "Win32appMosaicHelp", SrcDir$, DESTXFHELP$
  987.  
  988.     CopyFilesInCopyList
  989.  
  990.     IF ERR <> 0 THEN
  991.     GOTO QUITTRANSFORMINSTALL
  992.     END IF
  993.  
  994.     ''*** We are requested to add a section to WIN32S.INI indicating that we
  995.     ''*** use Win32s and what version we think we're using.
  996.  
  997.     IF DoesFileExist( DESTSYS$ + "WIN32S.INI", femExists ) THEN
  998.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", Win32sSectionName$, "Setup", "1", cmoOverwrite
  999.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", Win32sSectionName$, "Version", szNewVer$, cmoOverwrite
  1000.     END IF
  1001.  
  1002.     '' *** mplayer の設定を行う。
  1003.     IF OnWindowsNT() THEN
  1004.         CreateIniKeyValue DESTXF$ + IniFileName$, "Services", "Use_Async_DNS", "yes", cmoOverWrite
  1005.         CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "audio/x-wav", GetWindowsDir() + "system32\mplay32 %s", cmoOverWrite
  1006.         CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "audio/wav", GetWindowsDir() + "system32\mplay32 %s", cmoOverWrite
  1007.         CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "application/wav", GetWindowsDir() + "system32\mplay32 %s", cmoOverWrite
  1008.         CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "video/x-msvideo", GetWindowsDir() + "system32\mplay32 %s", cmoOverWrite
  1009.     ELSE   '' Windows 3.x
  1010.         CreateIniKeyValue DESTXF$ + IniFileName$, "Services", "Use_Async_DNS", "no", cmoOverWrite
  1011.         CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "audio/x-wav", GetWindowsDir() + "mplayer %s", cmoOverWrite
  1012.         CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "audio/wav", GetWindowsDir() + "mplayer %s", cmoOverWrite
  1013.         CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "application/wav", GetWindowsDir() + "mplayer %s", cmoOverWrite
  1014.         CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "video/x-msvideo", GetWindowsDir() + "mplayer %s", cmoOverWrite
  1015.     END IF
  1016.  
  1017.     '' *** MOSAIC.INI に MMGV.EXE をインストールしたディレクトリを
  1018.     '' 設定するため 94/11/10 by Manabe
  1019.     '' MosaicView V2 のために以下をコメントアウトした。95/3/28
  1020.     '' CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "image/gif", DESTXF$ + "mmgv.exe %s", cmoOverWrite
  1021.     '' CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "image/jpeg", DESTXF$ + "mmgv.exe %s", cmoOverWrite
  1022.     ''
  1023.  
  1024.     IF BoolWeInstalledWin32s% = 0 AND BoolWeSearchedWin32sEnglish% = 1 THEN
  1025.         CreateIniKeyValue DESTXF$ + IniFileName$, "Main", "Use_Japanese_Menu", "no", cmoOverWrite
  1026.     END IF
  1027.  
  1028.     '' CoperaWeb なら
  1029.     IF gBoolCoperaWeb% = 1 AND DoesFileExist( DESTWIN$ + "COPERWIN.INI", femExists ) THEN
  1030.            CreateIniKeyValue DESTWIN$ + "COPERWIN.INI", "System", "PcnaviWWWProgName", DESTXF$ + gExeName$, cmoOverWrite
  1031.  
  1032.     END IF
  1033.  
  1034.     ERR = 0
  1035.  
  1036.     ''
  1037.     ''他のグループの有無によってアイコン登録を決定する
  1038.     ''
  1039.     IF BoolCreateProgmanItem% = 1 THEN
  1040.         BoolInterNetGroup% = 0
  1041.         NWORK      = 1
  1042.         NLENG      = 1
  1043.         WORK$      = GetIniKeyString( DESTWIN$ + "PROGMAN.INI","Groups","Group" + MID$(STR$(NWORK),2,NLENG))
  1044.         WHILE WORK$     <> ""
  1045.             IF WORK$  = MakePath(DESTWIN$, "インターネットソ.GRP") THEN
  1046.                 BoolInterNetGroup% = 1        
  1047.             ENDIF
  1048.             NWORK     = NWORK + 1
  1049.             IF NWORK  > 9 THEN
  1050.                NLENG  = 2
  1051.             ENDIF
  1052.             WORK$     = GetIniKeyString( DESTWIN$ + "PROGMAN.INI","Groups","Group" + MID$(STR$(NWORK),2,NLENG))
  1053.         WEND
  1054.         IF BoolInterNetGroup% = 0 THEN
  1055.             CreateProgmanGroup gGroupName$, gGroupFileName$, cmoNone
  1056.             ShowProgmanGroup   gGroupName$, 1, cmoNone
  1057.             EntryProgmanGroup gGroupName$
  1058.         ENDIF
  1059.         IF BoolInterNetGroup% = 1 THEN
  1060.             ShowProgmanGroup  "インターネットソフトウェアセット" , 1, cmoNone
  1061.             EntryProgmanGroup "インターネットソフトウェアセット"
  1062.         END IF
  1063.  
  1064.     END IF    '' BoolCreateProgmanItem%
  1065.  
  1066.     ''*** Only put up success dialog if icon added to group
  1067.  
  1068.     IF ERR <> 0 THEN
  1069.     GOTO QUITTRANSFORMINSTALL
  1070.     END IF
  1071.  
  1072. ''***
  1073. ''*** if we installed Win32s, then we must force a reboot of the system.
  1074. ''***
  1075.  
  1076.     IF BoolWeInstalledWin32s% = 0 THEN
  1077.         '' PC通信サービス
  1078.         IF BoolPCCommExecuted% = 1 OR gBoolTrialVersion% = 1 THEN
  1079.         sz$ = UIStartDlg(CUIDLL$, TRANSFORMINSTALLED_2, "FInfoDlgProc", 0, "")
  1080.         ELSE
  1081.         sz$ = UIStartDlg(CUIDLL$, TRANSFORMINSTALLED, "FInfoDlgProc", 0, "")
  1082.         END IF
  1083.     ELSE
  1084.     sz$ = UIStartDlg(CUIDLL$, RESTARTINGWINDOWS, "FInfoDlgProc", 0, "")
  1085.         IF RebootSystem(OLEONLY% and not OLE_OLEBOOT%) = 0 THEN
  1086.         ''***
  1087.         ''*** We survived a 'reboot'; something must be wrong.  Panic.
  1088.         ''***
  1089.           CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "0", cmoOverwrite
  1090.             IF OLE2_32% = 1 THEN
  1091.                 CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "OLE", "Setup", "0", cmoOverwrite
  1092.             END IF
  1093.          i% = DoMsgBox("Win32sが正しくインストールされませんでした. Win32sを再度セットアップしてください.", "Windowsが再起動できません", MB_ICONEXCLAMATION+MB_OK+MB_TASKMODAL)
  1094.         END IF
  1095.  
  1096.     '' PC通信サービス
  1097.         IF BoolPCCommExecuted% = 1 THEN
  1098.         run PCComSrcDir$ + "main2.exe /E MOSAICV", NOWAIT
  1099.         END IF
  1100.     '' PC通信サービス
  1101.  
  1102.     END IF
  1103.  
  1104.     '' 以下のENDが終了である。
  1105.     END
  1106.  
  1107. ''****************************************************************************
  1108. ''****************************************************************************
  1109. ''***
  1110. ''*** Spyglass Transform Error Handling.
  1111. ''***
  1112. ''****************************************************************************
  1113. ''****************************************************************************
  1114.  
  1115. QUITTRANSFORMINSTALL:
  1116.     ON ERROR GOTO ERRQUIT
  1117.     IF ERR = STFQUIT THEN
  1118.     i% = DoMsgBox(TitleName$ + "のインストールを中止します.", TitleName$ + "セットアップ", MB_OK+MB_TASKMODAL)
  1119.     END IF
  1120.     i% = DoMsgBox(TitleName$ + "のインストールは行われませんでした.", TitleName$ + "セットアップ", MB_OK+MB_TASKMODAL)
  1121.  
  1122.     '' PC通信サービス
  1123.     IF BoolPCCommExecuted% = 1 THEN
  1124.     run PCComSrcDir$ + "main2.exe /E MOSAICV", NOWAIT
  1125.     END IF
  1126.     '' PC通信サービス
  1127.  
  1128.     END
  1129.  
  1130. ERRNORMALTRANSFORM:
  1131.     IF ERR = STFQUIT THEN
  1132.     GOTO QUITTRANSFORMINSTALL
  1133.     END IF
  1134.     RESUME NEXT
  1135.  
  1136.  
  1137.  
  1138. '*************************************************************************
  1139. '*************************************************************************
  1140. '***
  1141. '*** QUIT -- Initial error handler (until we define our own).
  1142. '***
  1143. '*************************************************************************
  1144. '*************************************************************************
  1145.  
  1146. QUIT:
  1147.     IF ERR <> STFQUIT THEN
  1148.     i% = DoMsgBox("セットアップを開始できません.", TitleName$ + "セットアップ", MB_OK+MB_TASKMODAL)
  1149.  
  1150.         '' PC通信サービス
  1151.         IF BoolPCCommExecuted% = 1 THEN
  1152.         run PCComSrcDir$ + "main2.exe /E MOSAICV", NOWAIT
  1153.         END IF
  1154.         '' PC通信サービス
  1155.     END IF
  1156.     END
  1157.  
  1158.  
  1159.  
  1160. '*************************************************************************
  1161. '*************************************************************************
  1162. '***
  1163. '*** BADPATH
  1164. '***
  1165. '*************************************************************************
  1166. '*************************************************************************
  1167.  
  1168. BADPATH:
  1169.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  1170.     IF sz$ = "REACTIVATE" THEN
  1171.     GOTO BADPATH
  1172.     END IF
  1173.     UIPop 1
  1174.     RETURN
  1175.  
  1176.  
  1177.  
  1178. '*************************************************************************
  1179. '*************************************************************************
  1180. '***
  1181. '*** ASKQUIT
  1182. '***
  1183. '*************************************************************************
  1184. '*************************************************************************
  1185.  
  1186. ASKQUIT:
  1187.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  1188.  
  1189.     IF sz$ = "EXIT" THEN
  1190.         UIPop 1
  1191.     UIPopAll
  1192.     ERROR STFQUIT
  1193.     ELSEIF sz$ = "REACTIVATE" THEN
  1194.     GOTO ASKQUIT
  1195.     ELSE
  1196.     UIPop 1
  1197.     END IF
  1198.     RETURN
  1199.  
  1200.  
  1201.  
  1202.  
  1203. '*************************************************************************
  1204. '*************************************************************************
  1205. '**
  1206. '** DoWin32sInstallation
  1207. '**
  1208. '** Purpose:
  1209. '**     Builds the copy list and performs all installation operations.
  1210. '** Arguments:
  1211. '**     none.
  1212. '** Returns:
  1213. '**     none.
  1214. '**
  1215. '*************************************************************************
  1216. '*************************************************************************
  1217.  
  1218. SUB DoWin32sInstallation(OLEONLY%, OLE2_32%, OLE2_16%, OLE2AUTO_16%, OLE16RUNAPP%) STATIC
  1219.  
  1220.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  1221.  
  1222.     '' Use file layout sections that specify OLDER file version/time check
  1223.     IF OLEONLY% = 0 THEN
  1224.     AddSectionFilesToCopyList "WindowsSystem", SrcDir$, DESTSYS$
  1225.     AddSectionFilesToCopyList "WindowsSystemWin32s", SrcDir$, DESTSYS$ + "WIN32S\"
  1226. ''    END IF
  1227.  
  1228.         '' Add obsolete files to be removed
  1229.         AddSectionFilesToCopyList "Win32sSystemObsoleteFiles", SrcDir$, DESTSYS$ + "WIN32S\"
  1230.     END IF
  1231.  
  1232.     OLE_PROTECT% = 0
  1233.     OLEINCLUDED% = DoesFileExist( GetSymbolValue("STF_SRCDIR") + "OLE2THK.DL_", femExists )
  1234.     if OLEINCLUDED% = 1 THEN
  1235.         IF (OLE2_16% = 1) OR (OLE2AUTO_16% = 1) THEN
  1236.             IF OLE16RUNAPP% = 1 THEN
  1237.                 '' Force all OLE2 DLLS to be copied during reboot.
  1238.                 i% = SetErrorMode(-32768)
  1239.                 i% = LoadLibrary(DESTSYS$ + "compobj.dll")
  1240.                 i% = LoadLibrary(DESTSYS$ + "ole2.dll")
  1241.                 i% = LoadLibrary(DESTSYS$ + "ole2prox.dll")
  1242.                 i% = LoadLibrary(DESTSYS$ + "ole2conv.dll")
  1243.                 i% = LoadLibrary(DESTSYS$ + "storage.dll")
  1244.                 i% = LoadLibrary(DESTSYS$ + "ole2nls.dll")
  1245.                 i% = LoadLibrary(DESTSYS$ + "ole2disp.dll")
  1246.                 i% = LoadLibrary(DESTSYS$ + "typelib.dll")
  1247.                 OLE_PROTECT% = 1
  1248.             END IF
  1249.             AddSectionFilesToCopyList "OleWindowsSystem", SrcDir$, DESTSYS$
  1250.         END IF
  1251.         IF OLE2_32% = 1 THEN
  1252.             AddSectionFilesToCopyList "OleWindowsSystemWin32s", SrcDir$, DESTSYS$ + "WIN32S\"
  1253.         END IF
  1254.         IF (OLE2_16% = 1) OR (OLE2_32% = 1) OR (OLE2AUTO_16% = 1) THEN
  1255.             AddSectionFilesToCopyList "Ole2RegWindowsSystem", SrcDir$, DESTSYS$
  1256.         END IF
  1257.         IF (OLE2AUTO_16% = 1) THEN
  1258.             AddSectionFilesToCopyList "StdoleWindowsSystem", SrcDir$, DESTSYS$
  1259.             IF (OLE16RUNAPP and DoesFileExist(DESTSYS$ + "stdole.tlb", femExists) ) THEN
  1260.                 ' copy stdole.tlb -> tempfile1
  1261.                 stdole1$ = DESTSYS$ + GetTempFileAt(DESTSYS$, "STD")
  1262.                 CopyFile DESTSYS$+"STDOLE.TLB", stdole1$, cmoOverwrit, 0
  1263.                 OLE_OLEBOOT% = 1
  1264.             END IF
  1265.         END IF
  1266.     END IF
  1267.  
  1268.     SetRestartDir GetWindowsDir()
  1269.  
  1270.     CopyFilesInCopyList
  1271.     
  1272.     IF (OLEINCLUDED% = 1) THEN
  1273.         RecoverFromCopy DESTSYS$ + "compobj.dll"
  1274.         RecoverFromCopy DESTSYS$ + "ole2.dll"
  1275.         RecoverFromCopy DESTSYS$ + "ole2prox.dll"
  1276.         RecoverFromCopy DESTSYS$ + "ole2conv.dll"
  1277.         RecoverFromCopy DESTSYS$ + "storage.dll"
  1278.         RecoverFromCopy DESTSYS$ + "ole2nls.dll"
  1279.         RecoverFromCopy DESTSYS$ + "ole2disp.dll"
  1280.         RecoverFromCopy DESTSYS$ + "typelib.dll"
  1281.     END IF
  1282.  
  1283.     IF (OLE_PROTECT% = 1) THEN
  1284.         '' Free all previously loaded libraries
  1285.         FreeLibrary GetModuleHandle("compobj")
  1286.         FreeLibrary GetModuleHandle("ole2")
  1287.         FreeLibrary GetModuleHandle("ole2prox")
  1288.         FreeLibrary GetModuleHandle("ole2conv")
  1289.         FreeLibrary GetModuleHandle("storage")
  1290.         FreeLibrary GetModuleHandle("ole2nls")
  1291.         FreeLibrary GetModuleHandle("ole2disp")
  1292.         FreeLibrary GetModuleHandle("typelib")
  1293.         OLE_PROTECT% = 0
  1294.     END IF
  1295.     IF (OLE_OLEBOOT% = 1) THEN
  1296.             'rename new stdole.tlb -> tempfile2
  1297.             stdole2$ = GetTempFileAt(DESTSYS$, "STD")
  1298.             RemoveFile DESTSYS$+stdole2$, cmoForce
  1299.             RenameFile DESTSYS$+"STDOLE.TLB" , stdole2$
  1300.             'rename tempfile1 -> stdole.tlb
  1301.             RenameFile stdole1$, "STDOLE.TLB"
  1302.             'write to _mssetup.bat: rename tempfile2 to stdole.tlb
  1303.             WriteLine DESTWIN$+"_MSSETUP.BAT", ""
  1304.             WriteLine DESTWIN$+"_MSSETUP.BAT", "DEL "+DESTSYS$+"STDOLE.TLB"
  1305.             WriteLine DESTWIN$+"_MSSETUP.BAT", "REN "+DESTSYS$+stdole2$+" STDOLE.TLB"
  1306.     END IF
  1307.     IF OLEINCLUDED% AND (OLE2_16% OR OLE2_32% OR OLE2AUTO_16%) THEN
  1308.         IF OLE16RUNAPP% THEN
  1309.             reg1$ = DESTWIN$ + GetTempFileAt(DESTWIN$, "REG")
  1310.             CopyFile DESTWIN$+"REG.DAT", reg1$, cmoOverwrit, 0
  1311.         END IF
  1312.   
  1313.         RUN "regedit /s " + DESTSYS$ + "ole2.reg"
  1314.         IF OLE16RUNAPP% THEN
  1315.             reg2$ = GetTempFileAt(DESTWIN$, "REG")
  1316.             RemoveFile DESTWIN$ + reg2$, cmoForce
  1317.             RenameFile DESTWIN$ + "REG.DAT" , reg2$
  1318.             'rename tempfile1 -> reg.dat
  1319.             RenameFile reg1$, "REG.DAT"
  1320.             'write to _mssetup.bat: rename tempfile2 to reg.dat
  1321.             WriteLine DESTWIN$+"_MSSETUP.BAT", ""
  1322.             WriteLine DESTWIN$+"_MSSETUP.BAT", "DEL "+DESTWIN$+"REG.DAT"
  1323.             WriteLine DESTWIN$+"_MSSETUP.BAT", "REN "+DESTWIN$ + reg2$+" REG.DAT"
  1324.             OLE_OLEBOOT% = 1
  1325.         END IF
  1326.     END IF
  1327.  
  1328. END SUB
  1329.  
  1330.  
  1331.  
  1332. '**************************************************************************
  1333. '**************************************************************************
  1334. '**
  1335. '** UpdateSystemIni
  1336. '**
  1337. '**************************************************************************
  1338. '**************************************************************************
  1339.  
  1340. SUB UpdateSystemIni STATIC
  1341.  
  1342.     VxDPath$ = DEST32S$ + "W32S.386"
  1343.     SystemIniPath$ = GetWindowsDir()
  1344.  
  1345.     t% = MakeSystemIni(SystemIniPath$, VxdPath$)
  1346.  
  1347. END SUB
  1348.  
  1349.  
  1350.  
  1351. '**************************************************************************
  1352. '**************************************************************************
  1353. '**
  1354. '** RebootSystem
  1355. '**
  1356. '**************************************************************************
  1357. '**************************************************************************
  1358.  
  1359. FUNCTION RebootSystem(OLEONLY%) STATIC AS INTEGER
  1360.  
  1361. '   Check if any files were locked during install.  If the RestartList
  1362. '   is not empty, ExitExecRestart() will restart Windows, cleanup setup
  1363. '   files, and copy over locked files before Windows restarts.
  1364.     i% = RestartListEmpty()
  1365.     IF i% = 0 THEN
  1366. '      ExitExecRestart() only returns if applications refuse to be shutdown.
  1367. '      Win32s is installed but will not operate until Windows is restarted
  1368. '      and the Win32s VxD is loaded.
  1369.        i% = ExitExecRestart()
  1370.        RebootSystem = 0
  1371.      ELSE
  1372. '      If the RestartList list is empty, it is necessary to restart windows
  1373. '      directly.  The MSSETUP program creates _MSRSTRT.EXE and _MSSETUP.BAT
  1374. '      in the restart directory.  This program should be exec'd to handle
  1375. '      proper MSSETUP cleanup (temp files) and restart Windows.
  1376.        IF (OLEONLY% = 1) THEN
  1377.            RebootSystem = 1
  1378.        ELSE
  1379.            i% = ExitWindowsExec( GetWindowsDir() + "_MSRSTRT.EXE", "_MSSETUP.BAT" )
  1380.            RebootSystem = 0
  1381.        END IF
  1382.      END IF
  1383.  
  1384. END FUNCTION
  1385.  
  1386.  
  1387.  
  1388. '**************************************************************************
  1389. '**************************************************************************
  1390. '**
  1391. '** MakePath
  1392. '**
  1393. '** Purpose:
  1394. '**     Appends a file name to the end of a directory path,
  1395. '**     inserting a backslash character as needed.
  1396. '** Arguments:
  1397. '**     szDir$  - full directory path (with optional ending "\")
  1398. '**     szFile$ - filename to append to directory
  1399. '** Returns:
  1400. '**     Resulting fully qualified path name.
  1401. '*************************************************************************
  1402. '**************************************************************************
  1403.  
  1404. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  1405.     IF szDir$ = "" THEN
  1406.     MakePath = szFile$
  1407.     ELSEIF szFile$ = "" THEN
  1408.     MakePath = szDir$
  1409.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  1410.     MakePath = szDir$ + szFile$
  1411.     ELSE
  1412.     MakePath = szDir$ + "\" + szFile$
  1413.     END IF
  1414. END FUNCTION
  1415.  
  1416. FUNCTION GetTempFileAt(szDir$, szPrefix$) STATIC AS STRING
  1417.     szCurDir$ = CURDIR$
  1418.     CHDIR szDir$ + "."
  1419.     szTempFile$ = STRING$(144, "E")
  1420.     i% = GetTempFileName(TF_FORCEDRIVE, szPrefix$,0, szTempFile$)
  1421.     CHDIR szCurDir$
  1422.     GetTempFileAt = MID$(szTempFile$,3)
  1423. END FUNCTION
  1424.  
  1425. SUB RecoverFromCopy(szFileName$) STATIC
  1426.     IF DoesFileExist(szFileName$, femExist) = 0 THEN
  1427.         szBackFile$ = MID$(szFileName$, 1, LEN(szFileName$)-3) + VERNUM$
  1428.         IF DoesfileExist(szBackFile$, femExist) = 0 THEN
  1429.             i% = DoMsgBox("ERROR: Could not find backup file "+szBackfile$, "Setup Error", MB_ICONEXLAMATION + MB_OK)
  1430.         ELSE
  1431.             CopyFile szBackFile$, szFileName$, cmoTimeStamp, 0
  1432.         END IF
  1433.     END IF
  1434. END SUB
  1435.  
  1436. FUNCTION Which(szFileName$) STATIC AS STRING
  1437.     TempPath$=ENVIRON$("PATH")
  1438.     start%=1
  1439.     pos% = INSTR(start%, TempPath$, ";")
  1440.     WHILE pos% <> 0
  1441.         IF pos%-start% <> 0 THEN
  1442.         dir$ = MID$(TempPath$, start%, pos%-start%)
  1443.             IF MID$(dir$, LEN(dir$), 1) <> "\" THEN
  1444.             dir$ = dir$ + "\"
  1445.         END IF
  1446.         IF DoesFileExist(dir$ + szFileName$, femExists) = 1 THEN
  1447.             Which$ = dir$
  1448.             EXIT FUNCTION
  1449.         END IF
  1450.         END IF
  1451.     start% = pos% + 1
  1452.         pos% = INSTR(start%, TempPath$, ";")
  1453.     WEND
  1454.     IF LEN(MID$(TempPath$,start%)) = 0 THEN
  1455.         EXIT FUNCTION
  1456.     END IF
  1457.     dir$ = MID$(TempPath$, start%)
  1458.     IF MID$(dir$, LEN(dir$), 1) <> "\" THEN
  1459.         dir$ = dir$ + "\"
  1460.     END IF
  1461.     IF DoesFileExist(dir$ + szFileName$, femExists) = 1 THEN
  1462.         Which$ = dir$
  1463.     END IF
  1464.  
  1465. END FUNCTION
  1466.  
  1467. SUB    EntryProgmanGroup(GroupName$) STATIC
  1468.     IF gBoolTrialVersion% = 1 THEN
  1469.         CreateProgmanItem  GroupName$, gMosaicName$ + " Ver1.0" + gTrialName$, DESTXF$ + gExeName$, "", cmoOverwrite
  1470.     ELSE
  1471.            CreateProgmanItem  GroupName$, gMosaicName$ + " Ver1.0", DESTXF$ + gExeName$, "", cmoOverwrite
  1472.     END IF
  1473.        CreateProgmanItem  GroupName$, gMosaicName$ + " リリースノート", "NOTEPAD.EXE " + DESTXF$ + "README.TXT", "", cmoOverwrite
  1474.     IF gBoolCoperaWeb% <> 1 THEN            '' CoperaWeb 関連ならMMGVは不要
  1475.            CreateProgmanItem  GroupName$, "MMGViewer", DESTXF$ + "MMGV.EXE", "", cmoOverwrite
  1476.     END IF
  1477. END SUB
  1478.