'**************************************************************************
'*                       MSSetup Toolkit Sample 1
'**************************************************************************

DECLARE FUNCTION AddFontResource LIB "GDI" (szFont$) AS INTEGER
DECLARE FUNCTION SendMessage& LIB "USER" (hwnd%,msg%,wparam%,lparam AS ANY)

'$DEFINE DEBUG  ''Define for script development/debugging

'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'

''Dialog ID's
CONST WELCOME       = 100
CONST ASKQUIT       = 200
CONST DESTPATH      = 300
CONST EXITFAILURE   = 400
CONST EXITQUIT      = 600
CONST EXITSUCCESS   = 700
CONST OPTIONS       = 800
CONST APPHELP       = 900
CONST CHECK	    = 2500
CONST BADPATH       = 6400

''Bitmap ID
CONST LOGO = 1

'GLOBAL CONST HWND_BROADCAST = &Hffff
'GLOBAL CONST WM_FONTCHANGE = &H1d

GLOBAL DEST$        ''Default destination directory.
GLOBAL OPTCUR$      ''Option selection from option dialog.
GLOBAL CHECKSTATES$

DECLARE SUB Install
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING

INIT:
    CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
    HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure

    SetBitmap CUIDLL$, LOGO
    SetTitle "泛亚集成办公系统安装"

    szInf$ = GetSymbolValue("STF_SRCINFPATH")
    IF szInf$ = "" THEN
        szInf$ = GetSymbolValue("STF_CWDDIR") + "BOOKMK.INF"
    END IF
    ReadInfFile szInf$

    OPTCUR$ = "1"
    DEST$ = "C:\PANASIA"
    CHECKSTATES$ = "ON"

'$IFDEF DEBUG
    i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
    WinDrive$ = MID$(GetWindowsDir, 1, 1)
    IF IsDriveValid(WinDrive$) = 0 THEN
        i% = DoMsgBox("Windows 驱动器 ('"+WinDrive$+"') 不是合法驱动器.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
        GOTO QUIT
    END IF
'$ENDIF ''DEBUG


WELCOME:
    sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
    IF sz$ = "CONTINUE" THEN
        UIPop 1
    ELSE
        GOSUB ASKQUIT
        GOTO WELCOME
    END IF

OPTION:
    SetSymbolValue "RadioDefault", OPTCUR$
OPTL1:
    sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
    OPTCUR$ = GetSymbolValue("ButtonChecked")

    IF sz$ = "CONTINUE" THEN
        UIPop(1)
    ELSEIF sz$ = "REACTIVATE" THEN
        GOTO OPTL1
    ELSE
        GOSUB ASKQUIT
        GOTO OPTION
    END IF

IF OPTCUR$ <> "1" THEN
    CHECKSTATES$ = "OFF"
    GOTO GETPATH
END IF

FONT:
    AddListItem "CheckItemsIn", CHECKSTATES$
CHK1:
    sz$ = UIStartDlg(CUIDLL$, CHECK, "FCheckDlgProc", APPHELP, HELPPROC$)
    CHECKSTATES$ = GetListItem("CheckItemsOut",1)

    IF sz$ = "CONTINUE" THEN
        UIPop(1)
    ELSEIF sz$ = "REACTIVATE" THEN
        GOTO CHK1
    ELSEIF sz$ = "BACK" THEN
       UIPop 1
        GOTO OPTL1
    ELSE
        GOSUB ASKQUIT
        GOTO CHK1
    END IF

'CreateIniKeyValue "WIN.INI", "PanAisa", "Check", CHECKSTATES$, cmoOverwrite

GETPATH:
    SetSymbolValue "EditTextIn", DEST$
    SetSymbolValue "EditFocus", "END"
GETPATHL1:
    sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
    DEST$ = GetSymbolValue("EditTextOut")

    IF sz$ = "CONTINUE" THEN
        IF IsDirWritable(DEST$) = 0 THEN
            GOSUB BADPATH
            GOTO GETPATHL1
        END IF
        UIPop 1
    ELSEIF sz$ = "REACTIVATE" THEN
        GOTO GETPATHL1
    ELSEIF sz$ = "BACK" THEN
        UIPop 1
        IF OPTCUR$ = "1" THEN
            GOTO CHK1
        ELSE
            GOTO OPTL1
        END IF
    ELSE
        GOSUB ASKQUIT
        GOTO GETPATH
    END IF


    Install


QUIT:
    ON ERROR GOTO ERRQUIT

    IF ERR = 0 THEN
        dlg% = EXITSUCCESS
    ELSEIF ERR = STFQUIT THEN
        dlg% = EXITQUIT
    ELSE
        dlg% = EXITFAILURE
    END IF
QUITL1:
    sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
    IF sz$ = "REACTIVATE" THEN
        GOTO QUITL1
    END IF
    UIPop 1

    END

ERRQUIT:
    i% = DoMsgBox("安装盘文件出错，请与销售商联系!", "安装信息", MB_OK+MB_TASKMODAL+MB_ICONHAND)
    END



BADPATH:
    sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
    IF sz$ = "REACTIVATE" THEN
        GOTO BADPATH
    END IF
    UIPop 1
    RETURN



ASKQUIT:
    sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")

    IF sz$ = "EXIT" THEN
        UIPopAll
        ERROR STFQUIT
    ELSEIF sz$ = "REACTIVATE" THEN
        GOTO ASKQUIT
    ELSE
        UIPop 1
    END IF
    RETURN

'**
'** Purpose:
'**     Builds the copy list and performs all installation operations.
'** Arguments:
'**     none.
'** Returns:
'**     none.
'*************************************************************************
SUB Install STATIC

    SrcDir$ = GetSymbolValue("STF_SRCDIR")
    CreateDir DEST$, cmoNone

    szSysDir$ = GetWindowsSysDir()
    IF szSysDir$ = "" THEN
        szSysDir$ = GetWindowsDir()
    END IF


    OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
    WriteToLogFile ""
    WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
    WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
    WriteToLogFile ""
    WriteToLogFile "May have had to create the directory: " + DEST$
    WriteToLogFile ""

    AddSectionFilesToCopyList "Files", SrcDir$, DEST$
    IF CHECKSTATES$ = "ON" THEN
	AddSectionFilesToCopyList "Options", SrcDir$, szSysDir$
    END IF

    CopyFilesInCopyList

'    CreateIniKeyValue "WIN.INI", "PanAisa", "Options", OPTCUR$, cmoOverwrite
'    CreateIniKeyValue "WIN.INI", "PanAisa", "Check", CHECKSTATES$, cmoOverwrite

    IF CHECKSTATES$ = "ON" THEN
	res%=AddFontResource("ZY.FOT")
'	res%=AddFontResource("DLSIMHEI.FOT")
'	res%=AddFontResource("DLSIMSUN.FOT")
	res%=AddFontResource("FZY.FOT")
	res%=AddFontResource("SIMHEI.FOT")
	res%=AddFontResource("SIMSUN.FOT")
	res%=AddFontResource("FHP.FOT")
	res%=AddFontResource("WB.FOT")
'	res%=AddFontResource("XST.FOT")
	res%=AddFontResource("XBS.FOT")
	res%=AddFontResource("XK.FOT")
'	OK=SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0)
	OK=SendMessage(65535,29,0,0)
	CreateIniKeyValue "WIN.INI", "fonts", "黑体 (TrueType)", "SIMHEI.FOT", cmoOverwrite
	CreateIniKeyValue "WIN.INI", "fonts", "宋体 (TrueType)", "SIMSUN.FOT", cmoOverwrite
	CreateIniKeyValue "WIN.INI", "fonts", "魏碑 (TrueType)", "WB.FOT", cmoOverwrite
	CreateIniKeyValue "WIN.INI", "fonts", "行楷 (TrueType)", "XK.FOT", cmoOverwrite
	CreateIniKeyValue "WIN.INI", "fonts", "繁综艺 (TrueType)", "FZY.FOT", cmoOverwrite
	CreateIniKeyValue "WIN.INI", "fonts", "繁琥珀 (TrueType)", "FHP.FOT", cmoOverwrite
	CreateIniKeyValue "WIN.INI", "fonts", "准园体 (TrueType)", "ZY.FOT", cmoOverwrite
	CreateIniKeyValue "WIN.INI", "fonts", "小标宋 (TrueType)", "XBS.FOT", cmoOverwrite
    END IF


    IF OPTCUR$ = "1" THEN
	CreateProgmanGroup "泛亚集成办公系统", "", cmoNone
	ShowProgmanGroup  "泛亚集成办公系统", 1, cmoNone
	CreateProgmanItem "泛亚集成办公系统", "BookMaker文书编排系统", MakePath(DEST$,"bookmakr.exe"), "", cmoOverwrite
	CreateProgmanItem "泛亚集成办公系统", "MagzMaker图文混排系统", MakePath(DEST$,"magzmakr.exe"), "", cmoOverwrite
	CreateProgmanItem "泛亚集成办公系统", "Table表格编排系统", MakePath(DEST$,"Table.exe"), "", cmoOverwrite
	CreateProgmanItem "泛亚集成办公系统", "说明书", MakePath(DEST$,"bookmakr.exe readme.bmk"), "", cmoOverwrite
    ELSE
	CreateProgmanGroup "PanaOffice for Windows", "", cmoNone
	ShowProgmanGroup  "PanaOffice for Windows", 1, cmoNone
	CreateProgmanItem "PanaOffice for Windows", "BookMaker", MakePath(DEST$,"bookmakr.exe"), "", cmoOverwrite
	CreateProgmanItem "PanaOffice for Windows", "MagzMaker", MakePath(DEST$,"magzmakr.exe"), "", cmoOverwrite
	CreateProgmanItem "PanaOffice for Windows", "Table", MakePath(DEST$,"Table.exe"), "", cmoOverwrite
	CreateProgmanItem "PanaOffice for Windows", "BookMaker", MakePath(DEST$,"bookmakr.exe readme.bmk"), "", cmoOverwrite
    END IF

    ''AddDos5Help "YOURAPP", "A brief help text for your Windows application."+chr$(10)+"It can be continued on another line with chr$(10).", cmoNone

    CloseLogFile

END SUB



'**
'** 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

