File: install.cmd

package info (click to toggle)
gle-graphics 4.3.9-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 9,652 kB
  • sloc: cpp: 78,109; sh: 161; python: 150; makefile: 68; perl: 46; ansic: 1
file content (195 lines) | stat: -rw-r--r-- 6,493 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
@echo off
setlocal enabledelayedexpansion
:: GLE Installation Script for Windows
:: Default installation directory
DEFAULT_INSTALL_PREFIX=%ProgramFiles%\gle-graphics
ENV_KEY=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
echo "\e[31mG\e[32mL\e[34mE\e[0m Installation Script"

set INSTALL_DIR=
set CREATE_FILETYPE_ASSOCIATION=1
set INSTALL=1
set UNINSTALL=0
set ADMIN_NEEDED=1
set PREFIX_NEEDED=1
set MY_EDITOR=

:: Parse command-line arguments
:parse_args
if "%~1"=="" goto arg_parse_done

if "%~1"=="--prefix" (
    shift
    set INSTALL_DIR=%~1
    shift
    goto parse_args
) else if "%~1"=="--editor" (
    shift
    set MY_EDITOR=%~1
    shift
    goto parse_args
) else if "%~1"=="--create_filetype_association" (
    set CREATE_FILETYPE_ASSOCIATION=1
    set INSTALL=0
    set ADMIN_NEEDED=0
    set PREFIX_NEEDED=0
    shift
    goto parse_args
) else if "%~1"=="--no_create_filetype_association" (
    set CREATE_FILETYPE_ASSOCIATION=0
    shift
    goto parse_args
) else if "%~1"=="--uninstall" (
    set UNINSTALL=1
    set CREATE_FILETYPE_ASSOCIATION=0
    shift
    goto parse_args
) else (
    echo Usage: %~nx0 [--prefix "C:\Program Files"] [--create_filetype_association] [--uninstall]
    exit /b 1
)
:arg_parse_done

if "%ADMIN_NEEDED%" == "1" (
    :: Check for Administrator privileges
    net session >nul 2>&1
    if %errorlevel% neq 0 (
        echo Error: Please run this script as Administrator.
        exit /b 1
    )
)

if "%PREFIX_NEEDED%" == "1" (
    :: Prompt user if no prefix provided
    set /p USER_INPUT=Choose installation directory [%DEFAULT_INSTALL_PREFIX% by default]:
    if "%USER_INPUT%"=="" (
        set INSTALL_DIR=%DEFAULT_INSTALL_PREFIX%
    ) else (
        set INSTALL_DIR=%USER_INPUT%
    )
)

if "%UNINSTALL%" == "1" (
    echo Removing GLE from %INSTALL_DIR%...
    :: Create directories
    rmdir /S "%INSTALL_DIR%"
    :: clean registry
    REG DELETE HKCR\.gle /f
    REG DELETE HKCR\glefile /f
    :: delete GLE_TOP variable
    set GLE_TOP=
    REG DELETE "%ENV_KEY%" /v GLE_TOP /f
    :: remove from PATH_EXT
    set "RegPath=%ENV_KEY"
    set "ValueName=PATHEXT"
    set "AppendText=;.GLE"
    for /f "tokens=3*" %%A in ('reg query "%RegPath%" /v "%ValueName%" ^| find "%ValueName%"') do (
        set "CurrentValue=%%A %%B"
    )
    :: Check if CurrentValue is empty
    if "%CurrentValue%"=="" (
        echo Value not found or empty. Nothing to remove.
        goto :EOF
    )
    :: echo Current value: %CurrentValue%
    :: Remove the specified text
    set "NewValue=%CurrentValue%"
    set "NewValue=!NewValue:%RemoveText%=!"
    :: Write updated value back to registry
    reg add "%RegPath%" /v "%ValueName%" /t REG_SZ /d "%NewValue%" /f

    :: remove from PATH
    set "RegPath=%ENV_KEY"
    set "ValueName=PATH"
    set "AppendText=;%INSTALL_DIR%\bin"
    for /f "tokens=3*" %%A in ('reg query "%RegPath%" /v "%ValueName%" ^| find "%ValueName%"') do (
        set "CurrentValue=%%A %%B"
    )
    :: Check if CurrentValue is empty
    if "%CurrentValue%"=="" (
        echo Value not found or empty. Nothing to remove.
        goto :EOF
    )
    :: echo Current value: %CurrentValue%
    :: Remove the specified text
    set "NewValue=%CurrentValue%"
    set "NewValue=!NewValue:%RemoveText%=!"
    :: Write updated value back to registry
    reg add "%RegPath%" /v "%ValueName%" /t REG_SZ /d "%NewValue%" /f
)

if "%INSTALL%" == "1" (
    echo Installing to %INSTALL_DIR%...
    :: Create directories
    mkdir "%INSTALL_DIR%"
    mkdir "%INSTALL_DIR%\bin"
    mkdir "%INSTALL_DIR%\fonts"
    mkdir "%INSTALL_DIR%\doc"
    mkdir "%INSTALL_DIR%\gleinc"
    :: Copy files (assuming script is in root of GLE source)
    copy bin\gle.exe "%INSTALL_DIR%\bin\"
    copy bin\qgle.exe "%INSTALL_DIR%\bin\"
    :: copy bin\manip.exe "%INSTALL_DIR%\bin\" (linux only)
    copy glerc "%INSTALL_DIR%"
    copy init.tex "%INSTALL_DIR%"
    copy initex.ini "%INSTALL_DIR%"
    copy doc\* "%INSTALL_DIR%\doc"
    copy gleinc\*.txt "%INSTALL_DIR%\doc"
    copy gleinc\*.gle "%INSTALL_DIR%\gleinc"
    xcopy font "%INSTALL_DIR%\font" /E /I /Y
    :: Set GLE_TOP variable
    set GLE_TOP=%INSTALL_DIR%\share\gle-graphics
    REG ADD "%ENV_KEY%" /f /v GLE_TOP /t REG_EXPAND_SZ /d "%INSTALL_DIR"
)

if %CREATE_FILETYPE_ASSOCIATION% == "1" (
    REG ADD HKCR\.gle /f /ve /d glefile
    REG ADD HKCR\.gle /f /v "Content Type" /t REG_SZ /d application/gle
    REG ADD HKCR\.gle /f /v "PerceivedType" /t REG_SZ /d text
    REG ADD HKCR\glefile /f /ve /d "GLE Script"
    REG ADD HKCR\glefile /f /v EditFlags /t REG_DWORD /d 0
    REG ADD HKCR\glefile /f /v BrowserFlags /t REG_DWORD /d 8
    REG ADD HKCR\glefile /f /v AlwaysShowExt /t REG_SZ
    REG ADD HKCR\glefile\DefaultIcon /f /ve /d "%INSTALL_DIR%\bin\qgle.exe,0"
    REG ADD HKCR\glefile\shell\open\command /f /v " " /d "\"%INSTALL_DIR%\bin\qgle.exe\" -f %%1" /t REG_SZ
    reg add HKCR\glefile\shell\edit /v MUIVerb /d "Edit" /f
    REG ADD HKCR\glefile\shell\edit\command /f /v " " /d "\"%MY_EDITOR%\" %%1" /t REG_SZ
    :: add to PATH if not allready present
    set "ValueName=PATH"
    set "AppendText=;%INSTALL_DIR%\bin"
    :: Query current value
    for /f "tokens=3*" %%A in ('reg query "%RegPath%" /v "%ValueName%" ^| find "%ValueName%"') do (
        set "CurrentValue=%%A %%B"
    )
    :: Check if CurrentValue is empty
    if "%CurrentValue%"=="" (
        echo Value not found or empty. Creating new value.
        set "NewValue=%AppendText%"
    ) else (
        echo Current value: %CurrentValue%
        set "NewValue=%CurrentValue%%AppendText%"
    )
    :: Write updated value back to registry
    reg add "%RegPath%" /v "%ValueName%" /t REG_SZ /d "%NewValue%" /f
    :: add to PATHEXT if not allready present
    :: Define registry path, value name, and text to append
    set "RegPath=%ENV_KEY"
    set "ValueName=PATHEXT"
    set "AppendText=;.GLE"
    :: Query current value
    for /f "tokens=3*" %%A in ('reg query "%RegPath%" /v "%ValueName%" ^| find "%ValueName%"') do (
        set "CurrentValue=%%A %%B"
    )
    :: Check if CurrentValue is empty
    if "%CurrentValue%"=="" (
        echo Value not found or empty. Creating new value.
        set "NewValue=%AppendText%"
    ) else (
        echo Current value: %CurrentValue%
        set "NewValue=%CurrentValue%%AppendText%"
    )
    :: Write updated value back to registry
    reg add "%RegPath%" /v "%ValueName%" /t REG_SZ /d "%NewValue%" /f

)
echo GLE Installation complete.