home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Curio City 2
/
CURIO2_1.bin
/
net
/
coperweb
/
disk1
/
msv_inst.ms_
/
msv_inst.ms
Wrap
Text File
|
1995-12-27
|
52KB
|
1,478 lines
'**************************************************************************
'* MSSetup Toolkit Sample 1
'*
'* Setup script for Spyglass Mosaic. This file is based upon the sample
'* file "\win32s\setup\32sinst.mst" provided with the Win32 SDK (3.1 final
'* release; win32s version 1.1).
'*
'**************************************************************************
'* さらに,日本語化にあたり手を加えました。
'* 変更点:・Win32s セットアップ部分を日本語Win32sSDKからのそれに差し替え
'* (・Viewerインストール部分の追加)
'* ・Win32s 1.21J とのマージを行った95/3/8 By K.Manabe
'* ・Win32s 1.25J とのマージ95/5/10 By K.Manabe
'* ・PC通信サービスとのマージをおこなった。
'**************************************************************************
'$DEFINE DEBUG ''Define for script development/debugging
'' PC通信サービス
BoolPCCommExecuted% = 0
CSrcPos% = InStr(COMMAND$, "/SRC ")
CDstPos% = InStr(COMMAND$, "/DST ")
'' /GRP はやめた 95/2/15
'CGrpPos% = InStr(COMMAND$, "/GRP ")
IF CSrcPos% = 0 THEN
CSrcPos% = Instr(COMMAND$, "/src ")
CDstPos% = InStr(COMMAND$, "/dst ")
'' CGrpPos% = InStr(COMMAND$, "/grp ")
END IF
''IF CSrcPos% <> 0 And CDstPos% <> 0 And CGrpPos% <> 0 THEN
IF CSrcPos% <> 0 And CDstPos% <> 0 THEN
BoolPCCommExecuted% = 1
PCComSrcDir$ = Mid$(COMMAND$, CSrcPos% + 5, CDstPos% - CSrcPos% - 6)
PCComDstDir$ = Mid$(COMMAND$, CDstPos% + 5, Len(COMMAND$) - CDstPos% - 4)
'' PCComDstDir$ = Mid$(COMMAND$, CDstPos% + 5, CGrpPos% - CDstPos% - 6)
'' PCComGrpName$ = Mid$(COMMAND$, CGrpPos% + 5, Len(COMMAND$) - CGrpPos% - 4)
COMMAND$ = Mid$(COMMAND$, 1, Len(COMMAND$) - (Len(COMMAND$) - CSrcPos%) - 1)
END IF
'' PC通信サービス
'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'
''****************************************************************************
''****************************************************************************
''*** Spyglass Transform Installation Dialog ID Numbers
''*** (These values must match the values in DIALOGS.H)
''****************************************************************************
''****************************************************************************
CONST WEINSTALLEDWIN32S = 4000
CONST ALREADYHAVEWIN32S = 4100
CONST KERNELHAS32 = 4200
CONST ALREADYHAVEWIN32SENGLISH = 4300 '' 英語版の Win32S のチェック用
CONST ALREADYHAVEINIFILE = 4400 '' MOSAICV.INI
CONST ALREADYHAVEMSVCRT20 = 4500 '' MSVCRT20.DLL
CONST ALREADYHAVECTL3D32 = 4600 '' CTL3D32.DLL
CONST TRANSFORMINSTALLED_2 = 4700
CONST RESTARTINGWINDOWS_FOR_SHARE = 4800
CONST ASKQUIT = 500
CONST BADPATH = 1400
CONST LICENCE = 101
CONST LICENCE2 = 104
CONST TRANSFORMWELCOME = 100
CONST TRANSFORMINSTALLED = 200
CONST TRANSFORMPATH = 300
CONST RESTARTINGWINDOWS = 400
CONST WANTSAMPLEDATA = 600
CONST INSTALLOLDER = 700
CONST WIN32SWELCOME = 1100
CONST VERPATH = 1200
CONST EXITFAILURE = 2100
CONST EXITQUIT = 2200
CONST EXITFAILNOTWIN31 = 2300
CONST EXITFAILNOTENH = 2400
CONST EXITFAILNOTINTEL = 2500
CONST EXITEXIT = 2600
CONST EXITFAILRUNAPP = 2700
''Bitmap ID
CONST LOGO = 1
''GetTempFileName flags
CONST TF_FORCEDRIVE = 128
GLOBAL DESTWIN$ ''Windows directory.
GLOBAL DESTSYS$ ''Windows\System directory.
GLOBAL DESTSYSNT$ ''WindowsNT\System32 directory. (Add by K.Manabe)
GLOBAL DEST32S$ ''Windows\System\Win32s directory
GLOBAL OLE_PROTECT% ''Indicates whether ole2 dlls were protected from being
'' copied.
GLOBAL OLE_OLEBOOT%
GLOBAL VERNUM$ '' Win32s Version Number (i.e., for v1.25 VERNUM$="125"
''****************************************************************************
''****************************************************************************
''*** Spyglass Transform Pathname for Installation
''****************************************************************************
''****************************************************************************
GLOBAL DESTXF$ ''Spyglass Transform Directory
DECLARE SUB DoWin32sInstallation(OLEONLY%, OLE2_32%, OLE2_16%, OLE2AUTO_16%, OLE16RUNAPP%)
DECLARE SUB RecoverFromCopy(szFileName$)
DECLARE SUB UpdateSystemIni
DECLARE FUNCTION RebootSystem(OLEONLY%) AS INTEGER
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
DECLARE FUNCTION MakeSystemIni LIB "INIUPD.DLL" (arg1$, arg2$) AS INTEGER
DECLARE FUNCTION RestartWindows LIB "INIUPD.DLL" AS INTEGER
DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
DECLARE FUNCTION PagingEnabled LIB "INIUPD.DLL" AS INTEGER
DECLARE FUNCTION ShareEnabled LIB "INIUPD.DLL" AS INTEGER
DECLARE FUNCTION IsWin32sLoaded LIB "INIUPD.DLL" (arg1$) AS INTEGER
DECLARE FUNCTION IsRunningApp LIB "INIUPD.DLL" AS INTEGER
DECLARE FUNCTION SetCuiFlags LIB "MSCUISTF.DLL" (arg1%, arg2%) AS INTEGER
DECLARE FUNCTION ExitWindowsExec LIB "USER.EXE" (arg1$, arg2$) AS INTEGER
DECLARE FUNCTION GetModuleHandle LIB "KRNL386.EXE" (arg1$) AS INTEGER
DECLARE FUNCTION LoadLibrary LIB "KRNL386.EXE" (arg1$) AS INTEGER
DECLARE SUB FreeLibrary LIB "KRNL386.EXE" (arg1%)
DECLARE FUNCTION SetErrorMode LIB "KRNL386.EXE" (arg1%) AS INTEGER
DECLARE FUNCTION GetTempFileName LIB "KRNL386.EXE" (drive%, prefix$, u%, filename$) AS INTEGER
DECLARE SUB WriteLine LIB "INIUPD.DLL" (filename$, text$)
DECLARE FUNCTION GetTempFileAt(szDir$, szPrefix$) as string
DECLARE FUNCTION RegQueryValue LIB "SHELL.DLL" (arg1&, arg2$, arg3$, arg4 AS POINTER TO LONG)AS LONG
DECLARE FUNCTION GetSystemCodePage LIB "INIUPD.DLL" AS INTEGER
DECLARE FUNCTION WritePrivateProfileString LIB "KRNL386.EXE" (arg1$, arg2$, arg3$, arg4$) AS INTEGER
'' 画面の最大化をおこなうように変更した
DECLARE FUNCTION MaxTopWnd LIB "MSCUISTF.DLL" (arg1%) AS INTEGER
DECLARE FUNCTION IsProgmanExec LIB "MSCUISTF.DLL" (arg1%) AS INTEGER
DECLARE SUB CheckProgmanEnd LIB "MSCUISTF.DLL"
DECLARE FUNCTION Which(szFileName$) AS STRING
DECLARE SUB EntryProgmanGroup(GroupName$)
INIT:
'' プログラムマネージャが起動中かを早い時期にチェックし,
'' 起動していない場合に起動しておく.
'' もし,CreateProgman の実行の直前だと間に合わない可能性がある.
IF IsProgmanExec(HwndFrame()) = 0 Then
run "progman.exe", NOWAIT
END IF
CUIDLL$ = "mscuistf.dll" ''Custom user interface dll
HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure
szOldVer$ ="1.00.000 " ''Reserve space in string for version
OLEONLY% = 0
OLE2_16% = 0
OLE2AUTO_16% = 0
OLE16RUNAPP% = 0
OLE_PROTECT% = 0
OLE_OLEBOOT% = 0
BoolWeInstalledWin32s% = 0
BoolWeSearchedWin32sEnglish% = 0 '' 英語版をチェックするため
BoolKernelSupports32% = 0
BoolKernelChicago%=0 '' Win95をチェックする
'' さまざまな初期設定
GLOBAL gBoolTrialVersion%
GLOBAL gBoolCoperaWeb%
GLOBAL gMosaicName$
GLOBAL gExeName$
GLOBAL gTrialName$
GLOBAL gGroupName$
GLOBAL gGroupFileName$
BoolCreateProgmanItem%=1 '' プログラムマネージャに登録するか
gBoolCoperaWeb%=1 '' CoperaWeb 関連ならTRUE
gBoolTrialVersion%=1 '' お試し版ならTRUE
gMosaicName$="COPERAWEB"
TitleName$="COPERAWEB (Ver1.0)"
Win32sSectionName$="CoperaWeb"
CreateDirName$="COPERAWE"
IniFileName$="COPERAWE.INI"
InfFileName$="COPERAWE.INF"
gExeName$="COPERAWE.EXE"
IF gBoolTrialVersion% = 1 THEN
gTrialName$ =" お試し版"
gGroupName$ = "コペラグラス"
gGroupFileName$ = "コペラグ.GRP"
ELSE
gGroupName$ = "コペラグラス"
gGroupFileName$ = "コペラグ.GRP"
END IF
'' PC通信サービスならグループなどを作成しない。
IF BoolPCCommExecuted% = 1 THEN
BoolCreateProgmanItem%=0
END IF
'' さまざまな初期設定の終わり
SrcDir$ = GetSymbolValue("STF_SRCDIR")
SetBitmap CUIDLL$, LOGO
SetTitle TitleName$ + "セットアップ プログラム"
i% = MaxTopWnd(HwndFrame())
szInf$ = GetSymbolValue("STF_SRCINFPATH")
IF szInf$ = "" THEN
szInf$ = GetSymbolValue("STF_CWDDIR") + InfFileName$
END IF
ReadInfFile szInf$
''****************************************************************************
''****************************************************************************
''***
''*** Spyglass Transform Greeting.
''***
''****************************************************************************
''****************************************************************************
'' LICENCE, TRANSFORMWELCOME でERROR命令を実行するので、
'' ON ERROR を追加した.
ON ERROR GOTO ERRNORMALWIN32S
LICENCE:
IF gBoolTrialVersion% = 1 THEN
sz$ = UIStartDlg(CUIDLL$, LICENCE2, "FLicenceDlgProc", 0, "")
'' プログラムマネージャとのDDE接続の切断
''IsProgmanExec()と少し離している.
CheckProgmanEnd
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOSUB ASKQUIT
GOTO LICENCE
END IF
END IF
TRANSFORMWELCOME:
sz$ = UIStartDlg(CUIDLL$, TRANSFORMWELCOME, "FInfoDlgProc", 0, "")
'' プログラムマネージャとのDDE接続の切断
''IsProgmanExec()と少し離している.
CheckProgmanEnd
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
UIPop 1
GOSUB ASKQUIT
GOTO TRANSFORMWELCOME
END IF
szXFNewVer$ = GetIniKeyString(SrcDir$ + IniFileName$, "Version", "Build")
szXFRelease$ = GetIniKeyString(SrcDir$ + IniFileName$, "Version", "Release")
''****************************************************************************
''****************************************************************************
''***
''*** Determine if Win32s is necessary.
''***
''****************************************************************************
''****************************************************************************
ON ERROR GOTO ERRNORMALWIN32S
WIN32SVER$ = MID$(GetSectionKeyVersion("WindowsSystem", "win32s16"), 1, 4)
VERNUM$ = MID$(WIN32SVER$, 1, 1) + MID$(WIN32SVER$, 3 , 2)
DESTWIN$ = GetWindowsDir()
DESTSYS$ = GetWindowsSysDir()
DESTSYSNT$ = GetWindowsDir() + "SYSTEM32\"
DEST32S$ = DESTSYS + "WIN32S\"
''****************************************************************************
''*** Determine if computer system is capable is using Win32s.
''****************************************************************************
CHECK:
'' Can not run on versions less than 3.10.
IF GetWindowsMajorVersion < 3 THEN
ExitCode% = EXITFAILNOTWIN31
GOTO QUITWIN32S
END IF
IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 10 THEN
ExitCode% = EXITFAILNOTWIN31
GOTO QUITWIN32S
END IF
'' Check that we are not runnig on Chicago, including pre-released
'' Chicago versions.
IF GetWindowsMajorVersion * 100 + GetWindowsMinorVersion > 350 THEN
BoolKernelChicago%=1
GOTO KERNEL32
END IF
IF GetWindowsMode < 2 THEN
IF OnWindowsNT() THEN
ExitCode% = EXITFAILNOTINTEL '' Running on Windows NT (on RISC)
ELSE
ExitCode% = EXITFAILNOTENH '' Standard Mode Windows
END IF
GOTO QUITWIN32S
END IF
IF OnWindowsNT() THEN
GOTO KERNEL32
END IF
''****************************************************************************
''*** See if our version is newer than the one on the system or the one on the
''*** system was not completely installed.
''****************************************************************************
if IsRunningApp() <> 0 THEN
ExitCode% = EXITFAILRUNAPP
GOTO QUITWIN32S
END IF
'' INFから情報を取るにはバージョンのチェックを行わなければならないが,
'' チェックすると英語版のWin32sのときに上書きすることが出来ない。
'' ゆえに,Win32s 1.15に戻す。
'' Get version of Win32s to be installed from version info in INF file
'' szNewVer$ = GetSectionKeyVersion("WindowsSystem", "win32s16")
'' Get version of Win32s to be installed from version info in file
SrcDir$ = GetSymbolValue("STF_SRCDIR")
szNewVer$ = GetVersionOfFile(SrcDir$ + "WIN32S16.DLL" )
'' See if OLE is included.
OLEINCLUDED% = DoesFileExist( GetSymbolValue("STF_SRCDIR") + "OLE2THK.DL_", femExists )
IF OLEINCLUDED% = 1 THEN
i% = WritePrivateProfileString("CoCreateGuid", "ForceRandom", "1", "compobj.ini")
'' See whether one of the OLE 16 bit components is loaded.
IF GetModulehandle("compobj") <> 0 THEN
OLE16RUNAPP% = 1
GOTO GetOleVersionWin32s
END IF
IF GetModuleHandle("ole2") <> 0 THEN
OLE16RUNAPP% = 1
GOTO GetOleVersionWin32s
END IF
IF GetModuleHandle("ole2prox") <> 0 THEN
OLE16RUNAPP% = 1
GOTO GetOleVersionWin32s
END IF
IF GetModuleHandle("ole2conv") <> 0 THEN
OLE16RUNAPP% = 1
GOTO GetOleVersionWin32s
END IF
IF GetModuleHandle("storage") <> 0 THEN
OLE16RUNAPP% = 1
GOTO GetOleVersionWin32s
END IF
IF GetModuleHandle("ole2nls") <> 0 THEN
OLE16RUNAPP% = 1
GOTO GetOleVersionWin32s
END IF
IF GetModuleHandle("ole2disp") <> 0 THEN
OLE16RUNAPP% = 1
GOTO GetOleVersionWin32s
END IF
IF GetModuleHandle("typelib") <> 0 THEN
OLE16RUNAPP% = 1
GOTO GetOleVersionWin32s
END IF
GetOleVersionWin32s:
szOleNewVer$ = GetSectionKeyVersion("OleWindowsSystemWin32s", "ole2thk")
'' Get version of currently installed OLE32 from version info of
'' ole2thk file
szOleOldVer$ = GetVersionOfFile( DESTSYS$ + "WIN32S\OLE2THK.DLL" )
szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "COMPOBJ.DLL" )
szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "compobj")
IF (szOle16NewVer$ > szOle16OldVer$) THEN
OLE2_16% = 1
END IF
szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2.DLL" )
szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2")
IF (szOle16NewVer$ > szOle16OldVer$) THEN
OLE2_16% = 1
END IF
szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2PROX.DLL" )
szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2prox")
IF (szOle16NewVer$ > szOle16OldVer$) THEN
OLE2_16% = 1
END IF
szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "STORAGE.DLL" )
szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "storage")
IF (szOle16NewVer$ > szOle16OldVer$) THEN
OLE2_16% = 1
END IF
szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2CONV.DLL" )
szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2conv")
IF (szOle16NewVer$ > szOle16OldVer$) THEN
OLE2_16% = 1
END IF
szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2NLS.DLL" )
szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2nls")
IF (szOle16NewVer$ > szOle16OldVer$) THEN
OLE2AUTO_16% = 1
END IF
szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "OLE2DISP.DLL" )
szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "ole2disp")
IF (szOle16NewVer$ > szOle16OldVer$) THEN
OLE2AUTO_16% = 1
END IF
szOle16OldVer$ = GetVersionOfFile( DESTSYS$ + "TYPELIB.DLL" )
szOle16NewVer$ = GetSectionKeyVersion("OleWindowsSystem", "typelib")
IF (szOle16NewVer$ > szOle16OldVer$) THEN
OLE2AUTO_16% = 1
END IF
END IF
OLE2_32% = OLEINCLUDED%
'' Check if Win32s is partially installed
sz$ = GetIniKeyString (DESTSYS$ + "WIN32S.INI", "Win32s", "Setup")
'' If WIN32S.INI specifies Win32s Setup=0, then force complete Win32s file overwrite
IF sz$ = "0" THEN
GOTO INSTALLWIN32S
END IF
'' If WIN32S.INI is missing, try and reinstall Win32s files/recreate WIN32S.INI
IF sz$ <> "1" THEN
GOTO INSTALLWIN32S
END IF
'' 英語版の Win32s がインストールされているかどうかのチェック
tmpCP$ = GetIniKeyString (DESTSYS$ + "WIN32S.INI", "Nls", "AnsiCP")
IF tmpCP$ <> "932" THEN
GOTO ALREADYHAVEWIN32SENGLISH
END IF
'' If Win32s is already installed, get running version number
i% = DoesFileExist( DESTSYS$ + "W32SYS.DLL", femExists )
IF i% = 1 THEN
i% = IsWin32sLoaded( szOldVer$ )
'' MSKK のバグのためこのようなチェックを行わなければ
'' ならない。
szJVer$ = GetVersionOfFile( DESTSYS$ + "WIN32S16.DLL" )
IF szJVer$ <> szOldVer$ THEN
szOldVer$ = szJVer$
END IF
END IF
IF i% = 0 THEN
GOTO INSTALLWIN32S
END IF
IF szNewVer$ = szOldVer$ THEN
GOTO ALREADYHAVEWIN32S
END IF
IF szNewVer$ > szOldVer$ THEN
GOTO INSTALLWIN32S
END IF
IF OLEINCLUDED% = 1 THEN
OLE2_32% = 0
IF szNewVer$ = szOldVer$ THEN
'' Compare OLE32 version and versions of each of OLE16 libraries.
sz$ = GetIniKeyString (DESTSYS$ + "WIN32S.INI", "OLE", "Setup")
'' If WIN32S.INI specifies OLE2 Setup=0, then force OLE2 file overwrite
IF ((sz$ <> "1") OR (szOleNewVer$ > szOleOldVer$)) THEN
OLEONLY% = 1
OLE2_32% = 1
GOTO INSTALLWIN32S
END IF
IF OLE2_16% OR OLE2AUTO_16 THEN
OLEONLY% = 1
GOTO INSTALLWIN32S
END IF
szValue$ = STRING$(20, 33)
cb& = len(szValue$)
i% = RegQueryValue (1, "Software\Microsoft\OLE2\UnknownUserType", szValue$, VARPTR(cb))
IF szValue$ = "Unknown" THEN
OLEONLY% = 1
OLE2_32% = 1
GOTO INSTALLWIN32S
END IF
END IF
END IF
GOTO ALREADYHAVEWIN32S
''****************************************************************************
''****************************************************************************
''***
''*** We must attempt to install Win32s.
''***
''****************************************************************************
''****************************************************************************
INSTALLWIN32S:
i% = SetCuiFlags(OLEONLY%, OLE16RUNAPP%)
sz$ = UIStartDlg(CUIDLL$, WIN32SWELCOME, "FInfoDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
UIPop 1
GOSUB ASKQUIT
GOTO INSTALLWIN32S
END IF
GETWIN32SPATH:
IF PagingEnabled() = 0 THEN
i% = DoMsgBox("コントロールパネルのエンハンスド モードを使用して,スワップ ファイルの設定を行ってください。", "Win32s の仮想記憶", MB_TASKMODAL+MB_ICONHAND+MB_OK)
ExitCode% = EXITEXIT '' Enhanced mode but not paging
GOTO QUITWIN32S
END IF
IF ShareEnabled() = 0 THEN
ShareComPath$ = ENVIRON$("DOSDIR")
IF MID$(ShareComPath$, LEN(ShareComPath$), 1) <> "\" THEN
ShareComPath$ = ShareComPath$ + "\"
END IF
IF ShareComPath$ = "\" THEN
ShareComPath$ = Which("SHARE.EXE")
ELSEIF DoesFileExist( ShareComPath$ + "SHARE.EXE", femExists) = 0 THEN
ShareComPath$ = Which("SHARE.EXE")
END IF
IF ShareComPath$ <> "" THEN
sz$ = UIStartDlg(CUIDLL$, RESTARTINGWINDOWS_FOR_SHARE, "FInfoDlgProc", 0, "")
i% = ExitWindowsExec( ShareComPath$ + "SHARE.EXE" , "")
'' ここには来ない。
END IF
i% = DoMsgBox( "ファイル-シェアリングが有効でなければなりません。Windows を起動する前に SHARE.EXE を起動してください。", "Win32s セットアップ", MB_TASKMODAL+MB_ICONEXCLAMATION+MB_OK)
ExitCode% = EXITEXIT '' SHARE not loaded
GOTO QUITWIN32S
END IF
''INSTALLWIN32Sのラベルから移動した。
'' EMosaic Ver2.0 とのマージ
SrcDir$ = GetSymbolValue("STF_SRCDIR")
BoolNeedCopy%=0
ClearCopyList
IF DoesFileExist(DESTSYS$ + "MSVCRT20.DLL", femExists) THEN
'' ファイルが同じ日付ならコピーしないようにした
IF GetDateOfFile(DESTSYS$ + "MSVCRT20.DLL") <> GetDateOfFile(SrcDir$ + "MSVCRT20.DL_") THEN
sz$ = UIStartDlg(CUIDLL$, ALREADYHAVEMSVCRT20, "FInfoDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOTO QUITTRANSFORMINSTALL
END IF
BoolNeedCopy%=1
AddSectionFilesToCopyList "msvcrt20", SrcDir$, DESTSYS$
END IF
ELSE
BoolNeedCopy%=1
AddSectionFilesToCopyList "msvcrt20", SrcDir$, DESTSYS$
END IF
IF DoesFileExist(DESTSYS$ + "CTL3D32.DLL", femExists) THEN
'' ファイルが同じ日付ならコピーしないようにした
IF GetDateOfFile(DESTSYS$ + "CTL3D32.DLL") <> GetDateOfFile(SrcDir$ + "CTL3D32.DL_") THEN
sz$ = UIStartDlg(CUIDLL$, ALREADYHAVECTL3D32, "FInfoDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOTO QUITTRANSFORMINSTALL
END IF
BoolNeedCopy%=1
AddSectionFilesToCopyList "ctl3d32", SrcDir$, DESTSYS$
END IF
ELSE
BoolNeedCopy%=1
AddSectionFilesToCopyList "ctl3d32", SrcDir$, DESTSYS$
END IF
IF BoolNeedCopy% = 1 THEN
CopyFilesInCopyList
END IF
SetSymbolValue "EditTextIn", DESTSYS$
SetSymbolValue "EditFocus", "END"
GETPATHL1:
sz$ = UIStartDlg(CUIDLL$, VERPATH, "FDispDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
IF IsDirWritable(DESTSYS$) = 0 THEN
GOSUB BADPATH
GOTO GETPATHL1
END IF
UIPop 1
ELSEIF sz$ = "REACTIVATE" THEN
UIPop 1
GOTO GETPATHL1
ELSEIF sz$ = "BACK" THEN
UIPop 1
GOTO INSTALLWIN32S
ELSE
UIPop 1
GOSUB ASKQUIT
GOTO GETPATHL1
END IF
COPYFILES:
IF OLEONLY% = 0 THEN
CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "0", cmoOverwrite
END IF
IF OLE2_32% = 1 THEN
CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "OLE", "Setup", "0", cmoOverwrite
END IF
'' Indicate Win32s install failure until all files known to be copied.
ExitCode% = EXITFAILURE
ERR = 0
CreateDir DEST32S$, cmoNone
DoWin32sInstallation OLEONLY%, OLE2_32%, OLE2_16%, OLE2AUTO_16%, OLE16RUNAPP%
UpdateSystemIni
'' Terminate if unhandled fatal error
IF ERR <> 0 THEN
GOTO QUITWIN32S
END IF
IF OLEONLY% = 0 THEN
CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "1", cmoOverwrite
CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Version", szNewVer$, cmoOverwrite
CreateIniKeyValue DESTSYS$ + "WIN32S.INI","Nls","AnsiCP",STR$(GetSystemCodePage()), cmoOverwrite
END IF
IF OLE2_32% = 1 THEN
CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "OLE", "Setup", "1", cmoOverwrite
CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "OLE", "Version", szOleNewVer, cmoOverwrite
END IF
BoolWeInstalledWin32s% = 1
GOTO INSTALLTRANSFORM
KERNEL32:
'
' Windows95 はMSVCRT20.DLL を持っており,CTL3D32.DLLは必要ない.95/5/10
'
IF BoolKernelChicago% = 0 THEN
'' EMosaic Ver2.0 とのマージ
SrcDir$ = GetSymbolValue("STF_SRCDIR")
BoolNeedCopy%=0
ClearCopyList
IF DoesFileExist(DESTSYSNT$ + "MSVCRT20.DLL", femExists) THEN
'' ファイルが同じ日付ならコピーしないようにした
IF GetDateOfFile(DESTSYSNT$ + "MSVCRT20.DLL") <> GetDateOfFile(SrcDir$ + "MSVCRTNT.DL_") THEN
sz$ = UIStartDlg(CUIDLL$, ALREADYHAVEMSVCRT20, "FInfoDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOTO QUITTRANSFORMINSTALL
END IF
BoolNeedCopy%=1
AddSectionFilesToCopyList "msvcrtnt", SrcDir$, DESTSYSNT$
END IF
ELSE
BoolNeedCopy%=1
AddSectionFilesToCopyList "msvcrtnt", SrcDir$, DESTSYSNT$
END IF
IF DoesFileExist(DESTSYSNT$ + "CTL3D32.DLL", femExists) THEN
'' ファイルが同じ日付ならコピーしないようにした
IF GetDateOfFile(DESTSYSNT$ + "CTL3D32.DLL") <> GetDateOfFile(SrcDir$ + "CTL3DNT.DL_") THEN
sz$ = UIStartDlg(CUIDLL$, ALREADYHAVECTL3D32, "FInfoDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOTO QUITTRANSFORMINSTALL
END IF
BoolNeedCopy%=1
AddSectionFilesToCopyList "ctl3dnt", SrcDir$, DESTSYSNT$
END IF
ELSE
BoolNeedCopy%=1
AddSectionFilesToCopyList "ctl3dnt", SrcDir$, DESTSYSNT$
END IF
IF BoolNeedCopy% = 1 THEN
CopyFilesInCopyList
END IF
END IF
BoolKernelSupports32% = 1
GOTO INSTALLTRANSFORM
ALREADYHAVEWIN32SENGLISH:
BoolWeSearchedWin32sEnglish% = 1
'' ALREADYHAVEWIN32S へ続く
ALREADYHAVEWIN32S:
'' EMosaic Ver2.0 とのマージ
SrcDir$ = GetSymbolValue("STF_SRCDIR")
BoolNeedCopy%=0
ClearCopyList
IF DoesFileExist(DESTSYS$ + "MSVCRT20.DLL", femExists) THEN
'' ファイルが同じ日付ならコピーしないようにした
IF GetDateOfFile(DESTSYS$ + "MSVCRT20.DLL") <> GetDateOfFile(SrcDir$ + "MSVCRT20.DL_") THEN
sz$ = UIStartDlg(CUIDLL$, ALREADYHAVEMSVCRT20, "FInfoDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOTO QUITTRANSFORMINSTALL
END IF
BoolNeedCopy%=1
AddSectionFilesToCopyList "msvcrt20", SrcDir$, DESTSYS$
END IF
ELSE
BoolNeedCopy%=1
AddSectionFilesToCopyList "msvcrt20", SrcDir$, DESTSYS$
END IF
IF DoesFileExist(DESTSYS$ + "CTL3D32.DLL", femExists) THEN
'' ファイルが同じ日付ならコピーしないようにした
IF GetDateOfFile(DESTSYS$ + "CTL3D32.DLL") <> GetDateOfFile(SrcDir$ + "CTL3D32.DL_") THEN
sz$ = UIStartDlg(CUIDLL$, ALREADYHAVECTL3D32, "FInfoDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOTO QUITTRANSFORMINSTALL
END IF
BoolNeedCopy%=1
AddSectionFilesToCopyList "ctl3d32", SrcDir$, DESTSYS$
END IF
ELSE
BoolNeedCopy%=1
AddSectionFilesToCopyList "ctl3d32", SrcDir$, DESTSYS$
END IF
IF BoolNeedCopy% = 1 THEN
CopyFilesInCopyList
END IF
BoolWeInstalledWin32s% = 0
GOTO INSTALLTRANSFORM
''****************************************************************************
''****************************************************************************
''***
''*** Win32s Error Handling.
''***
''****************************************************************************
''****************************************************************************
QUITWIN32S:
'' Install error handler for final message box routines
ON ERROR GOTO ERRQUIT
IF ERR = 0 THEN
dlg% = ExitCode%
ELSEIF ERR = STFQUIT THEN
IF (OLE_PROTECT% = 1) THEN
'' Free all previously loaded libraries
FreeLibrary GetModuleHandle("compobj")
FreeLibrary GetModuleHandle("ole2")
FreeLibrary GetModuleHandle("ole2prox")
FreeLibrary GetModuleHandle("ole2conv")
FreeLibrary GetModuleHandle("storage")
FreeLibrary GetModuleHandle("ole2nls")
FreeLibrary GetModuleHandle("ole2disp")
FreeLibrary GetModuleHandle("typelib")
END IF
dlg% = EXITQUIT
ExitCode% = EXITQUIT
ELSE
dlg% = EXITFAILURE
ExitCode% = EXITQUIT
END IF
QUITL1:
sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO QUITL1
END IF
UIPop 1
'' PC通信サービス
IF BoolPCCommExecuted% = 1 THEN
run PCComSrcDir$ + "main2.exe /E MOSAICV", NOWAIT
END IF
'' PC通信サービス
END
'' Fatal error handler for error message routine
ERRQUIT:
i% = DoMsgBox("セットアップ ディスクが不正です。", "セットアップ メッセージ", MB_OK+MB_TASKMODAL+MB_ICONHAND)
'' PC通信サービス
IF BoolPCCommExecuted% = 1 THEN
run PCComSrcDir$ + "main2.exe /E MOSAICV", NOWAIT
END IF
'' PC通信サービス
END
'' Bypass run-time errors. Let final dialog box display fatal error message.
ERRNORMALWIN32S:
'' Check if user cancelled setup
IF ERR = STFQUIT THEN
GOTO QUITWIN32S
END IF
'' エラー発生時にWin32sのインストールを飛ばし,MosaicViewのインストールを継続するのはおかしいので
'' RESUMRE NEXT をコメントアウトした
'' RESUME NEXT
GOTO QUITWIN32S
''****************************************************************************
''****************************************************************************
''***
''*** Start of Spyglass Transform Section.
''***
''****************************************************************************
''****************************************************************************
INSTALLTRANSFORM:
ON ERROR GOTO ERRNORMALTRANSFORM
''***
''*** Tell them the status of Win32s installation and ask if they
''*** still want to install Transform.
''***
IF BoolWeInstalledWin32s% = 1 THEN
sz$ = UIStartDlg(CUIDLL$, WEINSTALLEDWIN32S, "FInfoDlgProc", 0, "")
ELSE
IF BoolKernelSupports32% = 1 THEN
sz$ = UIStartDlg(CUIDLL$, KERNELHAS32, "FInfoDlgProc", 0, "")
ELSE
IF BoolWeSearchedWin32sEnglish% = 1 THEN
sz$ = UIStartDlg(CUIDLL$, ALREADYHAVEWIN32SENGLISH, "FInfoDlgProc", 0, "")
ELSE
sz$ = UIStartDlg(CUIDLL$, ALREADYHAVEWIN32S, "FInfoDlgProc", 0, "")
END IF
END IF
END IF
'' 上書きモードを追加しました。
'' 94/11/11 Manabe
IF sz$ = "OVERWRITE" THEN
UIPop 1
GOTO GETWIN32SPATH
END IF
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOTO QUITTRANSFORMINSTALL
END IF
SAMPLEDATA:
''***
''*** Ask if they want sample data installed.
''***
''*** DoSampleData = 0
''*** sz$ = UIStartDlg(CUIDLL$, WANTSAMPLEDATA, "FInfoDlgProc", 0, "")
''*** IF sz$ = "CONTINUE" THEN
''*** UIPop 1
''*** DoSampleData = 1
''*** ELSEIF sz$ = "EXIT" THEN
''*** GOTO QUITTRANSFORMINSTALL
''*** ELSE
''*** UIPop 1 ''*** Skip Sample Data
''*** END IF
GETTRANSFORMPATH:
''*** Get Pathname
DESTXF$ = MID$(DESTSYS$,1,3) + "WIN32APP\" + CreateDirName$
SetSymbolValue "EditTextIn", DESTXF$
SetSymbolValue "EditFocus", "END"
'' PC通信サービス
IF BoolPCCommExecuted% = 1 THEN
DESTXF$ = PCComDstDir$
IF MID$(DESTXF$, LEN(DESTXF$), 1) <> "\" THEN
DESTXF$ = DESTXF$ + "\"
END IF
DESTXF$ = DESTXF$ + CreateDirName$ + "\"
GOTO CHECKTRANSFORMVERSION
END IF
'' PC通信サービス
GETTRANSFORMPATHL1:
''*** Get Pathname Loop (get until valid)
sz$ = UIStartDlg(CUIDLL$, TRANSFORMPATH, "FEditDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
DESTXF$ = GetSymbolValue("EditTextOut")
IF MID$(DESTXF$, LEN(DESTXF$), 1) <> "\" THEN
DESTXF$ = DESTXF$ + "\"
END IF
''Validate new path.
IF IsDirWritable(DESTXF$) = 0 THEN
GOSUB BADPATH
GOTO GETTRANSFORMPATHL1
END IF
UIPop 1
GOTO CHECKTRANSFORMVERSION
ELSEIF sz$ = "REACTIVATE" THEN
GOTO GETTRANSFORMPATHL1
ELSEIF sz$ = "EXIT" THEN
UIPop 1
GOTO QUITTRANSFORMINSTALL
END IF
CHECKTRANSFORMVERSION:
''***
''*** Check our version number versus version number of previously
''*** installed version (if present).
''***
''*** We expect the .INI file to contain something like this:
''***
''*** [Version]
''*** Build=3.0.0.0
''*** Release=3.0a1
''***
''*** We use the build-version in the version check.
''*** We use the release-version in naming the PIF's.
''***
szXFOldVer$ = GetIniKeyString(DESTXF$ + IniFileName$, "Version", "Build")
IF szXFOldVer$ = "" or LEN(szXFOldVer$) = 0 THEN
GOTO COPYTRANSFORM
END IF
IF szXFNewVer$ < szXFOldVer$ THEN
sz$ = UIStartDlg(CUIDLL$, INSTALLOLDER, "FInfoDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOTO QUITTRANSFORMINSTALL
END IF
END IF
IF szXFOldVer$ <> "" THEN
sz$ = UIStartDlg(CUIDLL$, ALREADYHAVEINIFILE, "FInfoDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
RemoveFile DESTXF$ + "INI.BAK", cmoNone
ELSE
GOTO QUITTRANSFORMINSTALL
END IF
END IF
COPYTRANSFORM:
''*** Copy Spyglass Transform onto hard disk
ClearCopyList
CreateDir DESTXF$, cmoNone
SrcDir$ = GetSymbolValue("STF_SRCDIR")
ERR = 0
AddSectionFilesToCopyList "Win32appGuitar", SrcDir$, DESTXF$
DESTXFHELP$ = DESTXF$ + "HELP"
CreateDir DESTXFHELP$, cmoNone
AddSectionFilesToCopyList "Win32appMosaicHelp", SrcDir$, DESTXFHELP$
CopyFilesInCopyList
IF ERR <> 0 THEN
GOTO QUITTRANSFORMINSTALL
END IF
''*** We are requested to add a section to WIN32S.INI indicating that we
''*** use Win32s and what version we think we're using.
IF DoesFileExist( DESTSYS$ + "WIN32S.INI", femExists ) THEN
CreateIniKeyValue DESTSYS$ + "WIN32S.INI", Win32sSectionName$, "Setup", "1", cmoOverwrite
CreateIniKeyValue DESTSYS$ + "WIN32S.INI", Win32sSectionName$, "Version", szNewVer$, cmoOverwrite
END IF
'' *** mplayer の設定を行う。
IF OnWindowsNT() THEN
CreateIniKeyValue DESTXF$ + IniFileName$, "Services", "Use_Async_DNS", "yes", cmoOverWrite
CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "audio/x-wav", GetWindowsDir() + "system32\mplay32 %s", cmoOverWrite
CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "audio/wav", GetWindowsDir() + "system32\mplay32 %s", cmoOverWrite
CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "application/wav", GetWindowsDir() + "system32\mplay32 %s", cmoOverWrite
CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "video/x-msvideo", GetWindowsDir() + "system32\mplay32 %s", cmoOverWrite
ELSE '' Windows 3.x
CreateIniKeyValue DESTXF$ + IniFileName$, "Services", "Use_Async_DNS", "no", cmoOverWrite
CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "audio/x-wav", GetWindowsDir() + "mplayer %s", cmoOverWrite
CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "audio/wav", GetWindowsDir() + "mplayer %s", cmoOverWrite
CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "application/wav", GetWindowsDir() + "mplayer %s", cmoOverWrite
CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "video/x-msvideo", GetWindowsDir() + "mplayer %s", cmoOverWrite
END IF
'' *** MOSAIC.INI に MMGV.EXE をインストールしたディレクトリを
'' 設定するため 94/11/10 by Manabe
'' MosaicView V2 のために以下をコメントアウトした。95/3/28
'' CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "image/gif", DESTXF$ + "mmgv.exe %s", cmoOverWrite
'' CreateIniKeyValue DESTXF$ + IniFileName$, "Viewers", "image/jpeg", DESTXF$ + "mmgv.exe %s", cmoOverWrite
''
IF BoolWeInstalledWin32s% = 0 AND BoolWeSearchedWin32sEnglish% = 1 THEN
CreateIniKeyValue DESTXF$ + IniFileName$, "Main", "Use_Japanese_Menu", "no", cmoOverWrite
END IF
'' CoperaWeb なら
IF gBoolCoperaWeb% = 1 AND DoesFileExist( DESTWIN$ + "COPERWIN.INI", femExists ) THEN
CreateIniKeyValue DESTWIN$ + "COPERWIN.INI", "System", "PcnaviWWWProgName", DESTXF$ + gExeName$, cmoOverWrite
END IF
ERR = 0
''
''他のグループの有無によってアイコン登録を決定する
''
IF BoolCreateProgmanItem% = 1 THEN
BoolInterNetGroup% = 0
NWORK = 1
NLENG = 1
WORK$ = GetIniKeyString( DESTWIN$ + "PROGMAN.INI","Groups","Group" + MID$(STR$(NWORK),2,NLENG))
WHILE WORK$ <> ""
IF WORK$ = MakePath(DESTWIN$, "インターネットソ.GRP") THEN
BoolInterNetGroup% = 1
ENDIF
NWORK = NWORK + 1
IF NWORK > 9 THEN
NLENG = 2
ENDIF
WORK$ = GetIniKeyString( DESTWIN$ + "PROGMAN.INI","Groups","Group" + MID$(STR$(NWORK),2,NLENG))
WEND
IF BoolInterNetGroup% = 0 THEN
CreateProgmanGroup gGroupName$, gGroupFileName$, cmoNone
ShowProgmanGroup gGroupName$, 1, cmoNone
EntryProgmanGroup gGroupName$
ENDIF
IF BoolInterNetGroup% = 1 THEN
ShowProgmanGroup "インターネットソフトウェアセット" , 1, cmoNone
EntryProgmanGroup "インターネットソフトウェアセット"
END IF
END IF '' BoolCreateProgmanItem%
''*** Only put up success dialog if icon added to group
IF ERR <> 0 THEN
GOTO QUITTRANSFORMINSTALL
END IF
''***
''*** if we installed Win32s, then we must force a reboot of the system.
''***
IF BoolWeInstalledWin32s% = 0 THEN
'' PC通信サービス
IF BoolPCCommExecuted% = 1 OR gBoolTrialVersion% = 1 THEN
sz$ = UIStartDlg(CUIDLL$, TRANSFORMINSTALLED_2, "FInfoDlgProc", 0, "")
ELSE
sz$ = UIStartDlg(CUIDLL$, TRANSFORMINSTALLED, "FInfoDlgProc", 0, "")
END IF
ELSE
sz$ = UIStartDlg(CUIDLL$, RESTARTINGWINDOWS, "FInfoDlgProc", 0, "")
IF RebootSystem(OLEONLY% and not OLE_OLEBOOT%) = 0 THEN
''***
''*** We survived a 'reboot'; something must be wrong. Panic.
''***
CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "0", cmoOverwrite
IF OLE2_32% = 1 THEN
CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "OLE", "Setup", "0", cmoOverwrite
END IF
i% = DoMsgBox("Win32sが正しくインストールされませんでした. Win32sを再度セットアップしてください.", "Windowsが再起動できません", MB_ICONEXCLAMATION+MB_OK+MB_TASKMODAL)
END IF
'' PC通信サービス
IF BoolPCCommExecuted% = 1 THEN
run PCComSrcDir$ + "main2.exe /E MOSAICV", NOWAIT
END IF
'' PC通信サービス
END IF
'' 以下のENDが終了である。
END
''****************************************************************************
''****************************************************************************
''***
''*** Spyglass Transform Error Handling.
''***
''****************************************************************************
''****************************************************************************
QUITTRANSFORMINSTALL:
ON ERROR GOTO ERRQUIT
IF ERR = STFQUIT THEN
i% = DoMsgBox(TitleName$ + "のインストールを中止します.", TitleName$ + "セットアップ", MB_OK+MB_TASKMODAL)
END IF
i% = DoMsgBox(TitleName$ + "のインストールは行われませんでした.", TitleName$ + "セットアップ", MB_OK+MB_TASKMODAL)
'' PC通信サービス
IF BoolPCCommExecuted% = 1 THEN
run PCComSrcDir$ + "main2.exe /E MOSAICV", NOWAIT
END IF
'' PC通信サービス
END
ERRNORMALTRANSFORM:
IF ERR = STFQUIT THEN
GOTO QUITTRANSFORMINSTALL
END IF
RESUME NEXT
'*************************************************************************
'*************************************************************************
'***
'*** QUIT -- Initial error handler (until we define our own).
'***
'*************************************************************************
'*************************************************************************
QUIT:
IF ERR <> STFQUIT THEN
i% = DoMsgBox("セットアップを開始できません.", TitleName$ + "セットアップ", MB_OK+MB_TASKMODAL)
'' PC通信サービス
IF BoolPCCommExecuted% = 1 THEN
run PCComSrcDir$ + "main2.exe /E MOSAICV", NOWAIT
END IF
'' PC通信サービス
END IF
END
'*************************************************************************
'*************************************************************************
'***
'*** BADPATH
'***
'*************************************************************************
'*************************************************************************
BADPATH:
sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO BADPATH
END IF
UIPop 1
RETURN
'*************************************************************************
'*************************************************************************
'***
'*** ASKQUIT
'***
'*************************************************************************
'*************************************************************************
ASKQUIT:
sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
IF sz$ = "EXIT" THEN
UIPop 1
UIPopAll
ERROR STFQUIT
ELSEIF sz$ = "REACTIVATE" THEN
GOTO ASKQUIT
ELSE
UIPop 1
END IF
RETURN
'*************************************************************************
'*************************************************************************
'**
'** DoWin32sInstallation
'**
'** Purpose:
'** Builds the copy list and performs all installation operations.
'** Arguments:
'** none.
'** Returns:
'** none.
'**
'*************************************************************************
'*************************************************************************
SUB DoWin32sInstallation(OLEONLY%, OLE2_32%, OLE2_16%, OLE2AUTO_16%, OLE16RUNAPP%) STATIC
SrcDir$ = GetSymbolValue("STF_SRCDIR")
'' Use file layout sections that specify OLDER file version/time check
IF OLEONLY% = 0 THEN
AddSectionFilesToCopyList "WindowsSystem", SrcDir$, DESTSYS$
AddSectionFilesToCopyList "WindowsSystemWin32s", SrcDir$, DESTSYS$ + "WIN32S\"
'' END IF
'' Add obsolete files to be removed
AddSectionFilesToCopyList "Win32sSystemObsoleteFiles", SrcDir$, DESTSYS$ + "WIN32S\"
END IF
OLE_PROTECT% = 0
OLEINCLUDED% = DoesFileExist( GetSymbolValue("STF_SRCDIR") + "OLE2THK.DL_", femExists )
if OLEINCLUDED% = 1 THEN
IF (OLE2_16% = 1) OR (OLE2AUTO_16% = 1) THEN
IF OLE16RUNAPP% = 1 THEN
'' Force all OLE2 DLLS to be copied during reboot.
i% = SetErrorMode(-32768)
i% = LoadLibrary(DESTSYS$ + "compobj.dll")
i% = LoadLibrary(DESTSYS$ + "ole2.dll")
i% = LoadLibrary(DESTSYS$ + "ole2prox.dll")
i% = LoadLibrary(DESTSYS$ + "ole2conv.dll")
i% = LoadLibrary(DESTSYS$ + "storage.dll")
i% = LoadLibrary(DESTSYS$ + "ole2nls.dll")
i% = LoadLibrary(DESTSYS$ + "ole2disp.dll")
i% = LoadLibrary(DESTSYS$ + "typelib.dll")
OLE_PROTECT% = 1
END IF
AddSectionFilesToCopyList "OleWindowsSystem", SrcDir$, DESTSYS$
END IF
IF OLE2_32% = 1 THEN
AddSectionFilesToCopyList "OleWindowsSystemWin32s", SrcDir$, DESTSYS$ + "WIN32S\"
END IF
IF (OLE2_16% = 1) OR (OLE2_32% = 1) OR (OLE2AUTO_16% = 1) THEN
AddSectionFilesToCopyList "Ole2RegWindowsSystem", SrcDir$, DESTSYS$
END IF
IF (OLE2AUTO_16% = 1) THEN
AddSectionFilesToCopyList "StdoleWindowsSystem", SrcDir$, DESTSYS$
IF (OLE16RUNAPP and DoesFileExist(DESTSYS$ + "stdole.tlb", femExists) ) THEN
' copy stdole.tlb -> tempfile1
stdole1$ = DESTSYS$ + GetTempFileAt(DESTSYS$, "STD")
CopyFile DESTSYS$+"STDOLE.TLB", stdole1$, cmoOverwrit, 0
OLE_OLEBOOT% = 1
END IF
END IF
END IF
SetRestartDir GetWindowsDir()
CopyFilesInCopyList
IF (OLEINCLUDED% = 1) THEN
RecoverFromCopy DESTSYS$ + "compobj.dll"
RecoverFromCopy DESTSYS$ + "ole2.dll"
RecoverFromCopy DESTSYS$ + "ole2prox.dll"
RecoverFromCopy DESTSYS$ + "ole2conv.dll"
RecoverFromCopy DESTSYS$ + "storage.dll"
RecoverFromCopy DESTSYS$ + "ole2nls.dll"
RecoverFromCopy DESTSYS$ + "ole2disp.dll"
RecoverFromCopy DESTSYS$ + "typelib.dll"
END IF
IF (OLE_PROTECT% = 1) THEN
'' Free all previously loaded libraries
FreeLibrary GetModuleHandle("compobj")
FreeLibrary GetModuleHandle("ole2")
FreeLibrary GetModuleHandle("ole2prox")
FreeLibrary GetModuleHandle("ole2conv")
FreeLibrary GetModuleHandle("storage")
FreeLibrary GetModuleHandle("ole2nls")
FreeLibrary GetModuleHandle("ole2disp")
FreeLibrary GetModuleHandle("typelib")
OLE_PROTECT% = 0
END IF
IF (OLE_OLEBOOT% = 1) THEN
'rename new stdole.tlb -> tempfile2
stdole2$ = GetTempFileAt(DESTSYS$, "STD")
RemoveFile DESTSYS$+stdole2$, cmoForce
RenameFile DESTSYS$+"STDOLE.TLB" , stdole2$
'rename tempfile1 -> stdole.tlb
RenameFile stdole1$, "STDOLE.TLB"
'write to _mssetup.bat: rename tempfile2 to stdole.tlb
WriteLine DESTWIN$+"_MSSETUP.BAT", ""
WriteLine DESTWIN$+"_MSSETUP.BAT", "DEL "+DESTSYS$+"STDOLE.TLB"
WriteLine DESTWIN$+"_MSSETUP.BAT", "REN "+DESTSYS$+stdole2$+" STDOLE.TLB"
END IF
IF OLEINCLUDED% AND (OLE2_16% OR OLE2_32% OR OLE2AUTO_16%) THEN
IF OLE16RUNAPP% THEN
reg1$ = DESTWIN$ + GetTempFileAt(DESTWIN$, "REG")
CopyFile DESTWIN$+"REG.DAT", reg1$, cmoOverwrit, 0
END IF
RUN "regedit /s " + DESTSYS$ + "ole2.reg"
IF OLE16RUNAPP% THEN
reg2$ = GetTempFileAt(DESTWIN$, "REG")
RemoveFile DESTWIN$ + reg2$, cmoForce
RenameFile DESTWIN$ + "REG.DAT" , reg2$
'rename tempfile1 -> reg.dat
RenameFile reg1$, "REG.DAT"
'write to _mssetup.bat: rename tempfile2 to reg.dat
WriteLine DESTWIN$+"_MSSETUP.BAT", ""
WriteLine DESTWIN$+"_MSSETUP.BAT", "DEL "+DESTWIN$+"REG.DAT"
WriteLine DESTWIN$+"_MSSETUP.BAT", "REN "+DESTWIN$ + reg2$+" REG.DAT"
OLE_OLEBOOT% = 1
END IF
END IF
END SUB
'**************************************************************************
'**************************************************************************
'**
'** UpdateSystemIni
'**
'**************************************************************************
'**************************************************************************
SUB UpdateSystemIni STATIC
VxDPath$ = DEST32S$ + "W32S.386"
SystemIniPath$ = GetWindowsDir()
t% = MakeSystemIni(SystemIniPath$, VxdPath$)
END SUB
'**************************************************************************
'**************************************************************************
'**
'** RebootSystem
'**
'**************************************************************************
'**************************************************************************
FUNCTION RebootSystem(OLEONLY%) STATIC AS INTEGER
' Check if any files were locked during install. If the RestartList
' is not empty, ExitExecRestart() will restart Windows, cleanup setup
' files, and copy over locked files before Windows restarts.
i% = RestartListEmpty()
IF i% = 0 THEN
' ExitExecRestart() only returns if applications refuse to be shutdown.
' Win32s is installed but will not operate until Windows is restarted
' and the Win32s VxD is loaded.
i% = ExitExecRestart()
RebootSystem = 0
ELSE
' If the RestartList list is empty, it is necessary to restart windows
' directly. The MSSETUP program creates _MSRSTRT.EXE and _MSSETUP.BAT
' in the restart directory. This program should be exec'd to handle
' proper MSSETUP cleanup (temp files) and restart Windows.
IF (OLEONLY% = 1) THEN
RebootSystem = 1
ELSE
i% = ExitWindowsExec( GetWindowsDir() + "_MSRSTRT.EXE", "_MSSETUP.BAT" )
RebootSystem = 0
END IF
END IF
END FUNCTION
'**************************************************************************
'**************************************************************************
'**
'** MakePath
'**
'** Purpose:
'** Appends a file name to the end of a directory path,
'** inserting a backslash character as needed.
'** Arguments:
'** szDir$ - full directory path (with optional ending "\")
'** szFile$ - filename to append to directory
'** Returns:
'** Resulting fully qualified path name.
'*************************************************************************
'**************************************************************************
FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
IF szDir$ = "" THEN
MakePath = szFile$
ELSEIF szFile$ = "" THEN
MakePath = szDir$
ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
MakePath = szDir$ + szFile$
ELSE
MakePath = szDir$ + "\" + szFile$
END IF
END FUNCTION
FUNCTION GetTempFileAt(szDir$, szPrefix$) STATIC AS STRING
szCurDir$ = CURDIR$
CHDIR szDir$ + "."
szTempFile$ = STRING$(144, "E")
i% = GetTempFileName(TF_FORCEDRIVE, szPrefix$,0, szTempFile$)
CHDIR szCurDir$
GetTempFileAt = MID$(szTempFile$,3)
END FUNCTION
SUB RecoverFromCopy(szFileName$) STATIC
IF DoesFileExist(szFileName$, femExist) = 0 THEN
szBackFile$ = MID$(szFileName$, 1, LEN(szFileName$)-3) + VERNUM$
IF DoesfileExist(szBackFile$, femExist) = 0 THEN
i% = DoMsgBox("ERROR: Could not find backup file "+szBackfile$, "Setup Error", MB_ICONEXLAMATION + MB_OK)
ELSE
CopyFile szBackFile$, szFileName$, cmoTimeStamp, 0
END IF
END IF
END SUB
FUNCTION Which(szFileName$) STATIC AS STRING
TempPath$=ENVIRON$("PATH")
start%=1
pos% = INSTR(start%, TempPath$, ";")
WHILE pos% <> 0
IF pos%-start% <> 0 THEN
dir$ = MID$(TempPath$, start%, pos%-start%)
IF MID$(dir$, LEN(dir$), 1) <> "\" THEN
dir$ = dir$ + "\"
END IF
IF DoesFileExist(dir$ + szFileName$, femExists) = 1 THEN
Which$ = dir$
EXIT FUNCTION
END IF
END IF
start% = pos% + 1
pos% = INSTR(start%, TempPath$, ";")
WEND
IF LEN(MID$(TempPath$,start%)) = 0 THEN
EXIT FUNCTION
END IF
dir$ = MID$(TempPath$, start%)
IF MID$(dir$, LEN(dir$), 1) <> "\" THEN
dir$ = dir$ + "\"
END IF
IF DoesFileExist(dir$ + szFileName$, femExists) = 1 THEN
Which$ = dir$
END IF
END FUNCTION
SUB EntryProgmanGroup(GroupName$) STATIC
IF gBoolTrialVersion% = 1 THEN
CreateProgmanItem GroupName$, gMosaicName$ + " Ver1.0" + gTrialName$, DESTXF$ + gExeName$, "", cmoOverwrite
ELSE
CreateProgmanItem GroupName$, gMosaicName$ + " Ver1.0", DESTXF$ + gExeName$, "", cmoOverwrite
END IF
CreateProgmanItem GroupName$, gMosaicName$ + " リリースノート", "NOTEPAD.EXE " + DESTXF$ + "README.TXT", "", cmoOverwrite
IF gBoolCoperaWeb% <> 1 THEN '' CoperaWeb 関連ならMMGVは不要
CreateProgmanItem GroupName$, "MMGViewer", DESTXF$ + "MMGV.EXE", "", cmoOverwrite
END IF
END SUB