tazusb view win32/tazusb.nsi @ rev 196

Add tazusb.de.html (thanks HGT)
author Paul Issott <paul@slitaz.org>
date Sun Jan 29 12:58:34 2017 +0000 (2017-01-29)
parents 8a2fffd8d442
children
line source
1 ; Tazusb
2 ; Windows installer for SliTaz
3 ; (c) 2009 Cedric Tissieres (slitaz@objectif-securite.ch)
4 ; You'll need to put 7z.exe and 7z.dll from http://www.7-zip.org/ and syslinux.exe from http://syslinux.zytor.com/
5 ; in the NSIS plugins directory before compiling the script. Adapt the FROM_DIR constant too.
6 ; To add a translation, add the corresponding "!insertmacro MUI_LANGUAGE" and translates all the LangString you'll find below.
8 !define NAME "TazUSB - SliTaz LiveUSB utility "
9 !define FILENAME "tazusb"
10 !define VERSION "v0.2"
11 !define FROM_DIR "C:\ophcrack\livecd"
13 SetCompressor LZMA
14 CRCCheck On
15 XPStyle on
17 !include "MUI2.nsh"
18 !include "FileFunc.nsh"
21 # MUI Settings #####################################
22 ;**************
24 ; Interface settings
25 !define MUI_FINISHPAGE_NOAUTOCLOSE
26 !define MUI_HEADERIMAGE
27 !define MUI_HEADERIMAGE_BITMAP "${FROM_DIR}\slitaz-logo-nsis.bmp"
28 !define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
30 ; Welcome page
31 !define MUI_WELCOMEPAGE_TITLE $(Welcome_Title)
32 !define MUI_WELCOMEPAGE_TEXT $(Welcome_Text)
33 !insertmacro MUI_PAGE_WELCOME
34 ; ISO page
35 Var IsoFileHw
36 Var IsoFile
37 Var Label
38 Var Label2
39 Page custom isoFilePage
40 ; Drive page
41 Var DestDriveHW
42 Var DestDrive
43 Page custom drivePage
44 ; Warning page
45 Page custom warningPage
46 ; Instfiles page
47 !insertmacro MUI_PAGE_INSTFILES
48 ; Finish page
49 !define MUI_FINISHPAGE_TITLE $(Finish_Title)
50 !define MUI_FINISHPAGE_TEXT $(Finish_Text)
51 !define MUI_FINISHPAGE_LINK $(Finish_Link)
52 !define MUI_FINISHPAGE_LINK_LOCATION "http://slitaz.org"
53 !insertmacro MUI_PAGE_FINISH
55 ; Language files
56 !insertmacro MUI_LANGUAGE "English" ;first language is the default language
57 !insertmacro MUI_LANGUAGE "French"
58 !insertmacro MUI_LANGUAGE "Portuguese"
59 !insertmacro MUI_LANGUAGE "Russian"
62 ; Reserve files
64 ; MUI end ------
66 ; General Parameters
67 Name "${NAME} ${VERSION}"
68 OutFile "${FROM_DIR}\${FILENAME}.exe"
70 # Languages ######################################
72 ; English
73 LangString Welcome_Title ${LANG_ENGLISH} "${NAME}"
74 LangString Welcome_Text ${LANG_ENGLISH} "Welcome to TazUSB. This tool will help you install SliTaz on a USB drive."
75 LangString Finish_Title ${LANG_ENGLISH} "TazUSB has completed SliTaz installation."
76 LangString Finish_Text ${LANG_ENGLISH} "SliTaz is now installed on your USB drive and the drive is bootable."
77 LangString Finish_Link ${LANG_ENGLISH} "SliTaz website"
78 LangString IsoPage_Title ${LANG_ENGLISH} "Select ISO file"
79 LangString IsoPage_Title2 ${LANG_ENGLISH} "Choose the ISO image which will be installed on your USB drive."
80 LangString IsoPage_Text ${LANG_ENGLISH} "Select SliTaz ISO file to be installed on your USB drive. You can download it from http://www.slitaz.org if needed."
81 LangString IsoPage_Input ${LANG_ENGLISH} "SliTaz ISO File"
82 LangString IsoFile ${LANG_ENGLISH} "ISO file|*.iso"
83 LangString DrivePage_Title ${LANG_ENGLISH} "Choose USB drive location"
84 LangString DrivePage_Title2 ${LANG_ENGLISH} "Choose the USB drive on which to install SliTaz."
85 LangString DrivePage_Text ${LANG_ENGLISH} "TazUSB will install SliTaz on the following drive. Make sure that this drive can be safely deleted! Click Next to continue."
86 LangString DrivePage_Input ${LANG_ENGLISH} "Destination USB Drive"
87 LangString WarningPage_Title ${LANG_ENGLISH} "Warning!"
88 LangString WarningPage_Title2 ${LANG_ENGLISH} "TazUSB is ready to install SliTaz on the selected drive."
89 LangString WarningPage_Text ${LANG_ENGLISH} "TazUSB is now ready to install SliTaz from:$\r$\n$\r$\n$IsoFile $\r$\n$\r$\non your selected destination USB drive:$\r$\n$\r$\n$DestDrive. $\r$\n$\r$\nThe contents of this drive will be deleted! If you are sure, click Next to continue."
90 LangString Iso2USB_Extract ${LANG_ENGLISH} "Extract files from $IsoFile"
91 LangString Iso2USB_CreateSyslinux ${LANG_ENGLISH} "Create syslinux configuration files on $DestDrive"
92 LangString Iso2USB_ExecuteSyslinux ${LANG_ENGLISH} "Execute syslinux on $R0"
93 LangString Iso2USB_WarningSyslinux ${LANG_ENGLISH} "An error ($R8) occurred when executing syslinux.$\r$\nYour USB drive won't be bootable..."
95 ; French
96 LangString Welcome_Title ${LANG_FRENCH} "${NAME}"
97 LangString Welcome_Text ${LANG_FRENCH} "Bienvenue dans TazUSB. Cet outil va vous aider à installer SliTaz sur une clé USB."
98 LangString Finish_Title ${LANG_FRENCH} "L'installation a été terminée par TazUSB."
99 LangString Finish_Text ${LANG_FRENCH} "SliTaz est maintenant installé sur votre clé USB et celle-ci est démarrable."
100 LangString Finish_Link ${LANG_FRENCH} "Site web de SliTaz"
101 LangString IsoPage_Title ${LANG_FRENCH} "Sélectionner un fichier ISO"
102 LangString IsoPage_Title2 ${LANG_FRENCH} "Choisissez l'image ISO qui sera installée sur votre clé USB."
103 LangString IsoPage_Text ${LANG_FRENCH} "Sélectionnez l'image ISO de SliTaz qui sera installée sur votre clé USB. Vous pouvez en télécharger une sur http://www.slitaz.org au besoin."
104 LangString IsoPage_Input ${LANG_FRENCH} "Image ISO SliTaz"
105 LangString IsoFile ${LANG_FRENCH} "Image ISO|*.iso"
106 LangString DrivePage_Title ${LANG_FRENCH} "Sélectionner un lecteur USB"
107 LangString DrivePage_Title2 ${LANG_FRENCH} "Choisissez le lecteur USB sur lequel sera installé SliTaz"
108 LangString DrivePage_Text ${LANG_FRENCH} "TazUSB va maintenant installer SliTaz sur le lecteur sélectionné ci-dessous. Assurez-vous que les données contenues sur cette clé peuvent être effacées! Cliquer sur Suivant pour continuer."
109 LangString DrivePage_Input ${LANG_FRENCH} "Lecteur USB de destination"
110 LangString WarningPage_Title ${LANG_FRENCH} "Attention!"
111 LangString WarningPage_Title2 ${LANG_FRENCH} "TazUSB est prêt à installer SliTaz sur le lecteur sélectionné."
112 LangString WarningPage_Text ${LANG_FRENCH} "TazUSB est maintenant prêt à installer SliTaz depuis:$\r$\n$\r$\n$IsoFile $\r$\n$\r$\nsur le lecteur USB sélectionné:$\r$\n$\r$\n$DestDrive. $\r$\n$\r$\nLe contenu de ce lecteur peut être effacé! Si vous êtes sûr, cliquer sur Suivant pour continuer."
113 LangString Iso2USB_Extract ${LANG_FRENCH} "Extraction des fichiers de $IsoFile"
114 LangString Iso2USB_CreateSyslinux ${LANG_FRENCH} "Création de la configuration syslinux sur $DestDrive"
115 LangString Iso2USB_ExecuteSyslinux ${LANG_FRENCH} "Exécution de syslinux sur $R0"
116 LangString Iso2USB_WarningSyslinux ${LANG_FRENCH} "Une erreur ($R8) est survenue pendant l'exécution de syslinux.$\r$\n Votre clé USB ne sera pas démarrable..."
118 ; Portuguese
119 LangString Welcome_Title ${LANG_PORTUGUESE} "${NAME}"
120 LangString Welcome_Text ${LANG_PORTUGUESE} "Bem-vindo ao TazUSB. Este aplicativo o ajudará a instalar o SliTaz em um drive USB."
121 LangString Finish_Title ${LANG_PORTUGUESE} "O TazUSB finalizou a instalação do SliTaz."
122 LangString Finish_Text ${LANG_PORTUGUESE} "O SliTaz está instalado em seu drive USB e o processo de boot agora pode ser feito."
123 LangString Finish_Link ${LANG_PORTUGUESE} "Site do SliTaz"
124 LangString IsoPage_Title ${LANG_PORTUGUESE} "Selecionar arquivo ISO"
125 LangString IsoPage_Title2 ${LANG_PORTUGUESE} "Escolher imagem ISO a ser instalada no drive USB."
126 LangString IsoPage_Text ${LANG_PORTUGUESE} "Selecionar imagem ISO do SliTaz a ser instalada no drive USB. Você pode obtê-la, se necessário, em http://www.slitaz.org."
127 LangString IsoPage_Input ${LANG_PORTUGUESE} "Arquivo ISO do SliTaz"
128 LangString IsoFile ${LANG_PORTUGUESE} "Arquivo ISO|*.iso"
129 LangString DrivePage_Title ${LANG_PORTUGUESE} "Escolha a localização do drive USB"
130 LangString DrivePage_Title2 ${LANG_PORTUGUESE} "Escolha o drive USB no qual o SliTaz será instalado."
131 LangString DrivePage_Text ${LANG_PORTUGUESE} "O TazUSB instalará o SliTaz no seguinte drive. Certifique-se de que o conteúdo deste drive possa ser seguramente apagado! Clique Next para continuar."
132 LangString DrivePage_Input ${LANG_PORTUGUESE} "Drive USB de destino"
133 LangString WarningPage_Title ${LANG_PORTUGUESE} "Aviso!"
134 LangString WarningPage_Title2 ${LANG_PORTUGUESE} "O TazUSB está pronto para instalar o SliTaz no drive selecionado."
135 LangString WarningPage_Text ${LANG_PORTUGUESE} "O TazUSB está pronto para instalar o SliTaz de:$\r$\n$\r$\n$IsoFile $\r$\n$\r$\nem seu drive de destino selecionado:$\r$\n$\r$\n$DestDrive. $\r$\n$\r$\nO conteúdo deste drive será apagado! Para prosseguir com a operação, clique Next para continuar."
136 LangString Iso2USB_Extract ${LANG_PORTUGUESE} "Extrair arquivos de $IsoFile"
137 LangString Iso2USB_CreateSyslinux ${LANG_PORTUGUESE} "Criar arquivos de configuração do syslinux em $DestDrive"
138 LangString Iso2USB_ExecuteSyslinux ${LANG_PORTUGUESE} "Executar syslinux em $R0"
139 LangString Iso2USB_WarningSyslinux ${LANG_PORTUGUESE} "Um erro ($R8) ocorreu durante a execução do syslinux.$\r$\nSeu drive USB não será inicializável..."
141 ; Russian
142 LangString Welcome_Title ${LANG_RUSSIAN} "${NAME}"
143 LangString Welcome_Text ${LANG_RUSSIAN} "TazUSB установит SliTaz на носитель USB."
144 LangString Finish_Title ${LANG_RUSSIAN} "Установка SliTaz завершена."
145 LangString Finish_Text ${LANG_RUSSIAN} "Теперь SliTaz установлен на загрузочный носитель USB."
146 LangString Finish_Link ${LANG_RUSSIAN} "Сайт SliTaz"
147 LangString IsoPage_Title ${LANG_RUSSIAN} "Выбор файла ISO"
148 LangString IsoPage_Title2 ${LANG_RUSSIAN} "Выберите образ ISO, который будет установлен на носитель USB."
149 LangString IsoPage_Text ${LANG_RUSSIAN} "Выберите файл образа SliTaz, который будет установлен на носитель USB. При необходимости вы можете загрузить его на http://www.slitaz.org."
150 LangString IsoPage_Input ${LANG_RUSSIAN} "Файл SliTaz ISO"
151 LangString IsoFile ${LANG_RUSSIAN} "Файл ISO|*.iso"
152 LangString DrivePage_Title ${LANG_RUSSIAN} "Выбор носителя USB"
153 LangString DrivePage_Title2 ${LANG_RUSSIAN} "Выберите носитель USB, на который будет установлен SliTaz."
154 LangString DrivePage_Text ${LANG_RUSSIAN} "TazUSB установить SliTaz на указанный носитель. Убедитесь, что на нём отсутствуют важные файлы, так как всё будет удалено! Нажмите Далее для продолжения."
155 LangString DrivePage_Input ${LANG_RUSSIAN} "Целевой носитель USB"
156 LangString WarningPage_Title ${LANG_RUSSIAN} "Внимание!"
157 LangString WarningPage_Title2 ${LANG_RUSSIAN} "TazUSB готов установить SliTaz на указанный носитель."
158 LangString WarningPage_Text ${LANG_RUSSIAN} "Теперь TazUSB готов установить SliTaz из образа$\r$\n$\r$\n$IsoFile $\r$\n$\r$\nна выбранный носитель USB$\r$\n$\r$\n$DestDrive. $\r$\n$\r$\nСодержимое этого носителя будет удалено! Нажмите Далее для продолжения."
159 LangString Iso2USB_Extract ${LANG_RUSSIAN} "Извлечение файлов из образа $IsoFile"
160 LangString Iso2USB_CreateSyslinux ${LANG_RUSSIAN} "Настройка syslinux на носителе $DestDrive"
161 LangString Iso2USB_ExecuteSyslinux ${LANG_RUSSIAN} "Запуск syslinux на $R0"
162 LangString Iso2USB_WarningSyslinux ${LANG_RUSSIAN} "При выполнении syslinux возникла ошибка ($R8).$\r$\nНоситель USB не будет загрузочным…"
164 # Functions #######################################
166 Function isoFilePage
168 !insertmacro MUI_HEADER_TEXT $(IsoPage_Title) $(IsoPage_Title2)
170 nsDialogs::Create 1018
172 ${If} $IsoFile == ""
173 GetDlgItem $6 $HWNDPARENT 1 ; Get "Next" control handle
174 EnableWindow $6 0 ; disable "Next" control
175 ${EndIf}
177 ${NSD_CreateLabel} 0 0 100% 30 $(IsoPage_Text)
178 Pop $Label
180 ${NSD_CreateLabel} 15 102 100% 15 $(IsoPage_Input)
181 Pop $Label2
183 nsDialogs::CreateControl EDIT ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL}|${ES_READONLY} ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} 10 120 85% 20 $IsoFile
184 Pop $IsoFileHw
186 ${NSD_CreateBrowseButton} 89% 120 7% 20 ...
187 Var /GLOBAL IsoFile_BrowseButton
188 Pop $IsoFile_BrowseButton
189 GetFunctionAddress $0 OnClick_IsoFile_BrowseButton
190 nsDialogs::OnClick $IsoFile_BrowseButton $0
192 nsDialogs::Show
193 FunctionEnd
195 Function OnClick_IsoFile_BrowseButton
198 nsDialogs::SelectFileDialog /NOUNLOAD open "" $(IsoFile)
199 Pop $0
201 ${If} $0 != ""
202 ${NSD_SetText} $IsoFileHw $0
203 StrCpy $IsoFile "$0"
204 GetDlgItem $6 $HWNDPARENT 1 ; Get "Next" control handle
205 EnableWindow $6 1 ; enable "Next" control
206 ${EndIf}
208 FunctionEnd
210 Function drivePage
212 !insertmacro MUI_HEADER_TEXT $(DrivePage_Title) $(DrivePage_Title2)
214 nsDialogs::Create 1018
216 ${If} $DestDrive == ""
217 GetDlgItem $6 $HWNDPARENT 1 ; Get "Next" control handle
218 EnableWindow $6 0 ; disable "Next" control
219 ${EndIf}
221 ${NSD_CreateLabel} 0 0 100% 30 $(DrivePage_Text)
222 Pop $Label
224 ${NSD_CreateLabel} 15 102 100% 15 $(DrivePage_Input)
225 Pop $Label2
227 ${NSD_CreateDroplist} 10 120 85% 20 ""
228 Pop $DestDriveHw
229 ${NSD_OnChange} $DestDriveHw db_select.onchange
230 ${GetDrives} "FDD+HDD" driveListFiller
231 ${If} $DestDrive != ""
232 ${NSD_CB_SelectString} $DestDriveHw $DestDrive
233 ${EndIf}
235 nsDialogs::Show
236 FunctionEnd
238 Function db_select.onchange
239 Pop $DestDriveHw
240 ${NSD_GetText} $DestDriveHw $0
241 StrCpy $DestDrive "$0"
242 GetDlgItem $6 $HWNDPARENT 1 ; Get "Next" control handle
243 EnableWindow $6 1 ; enable "Next" control
244 FunctionEnd
246 Function driveListFiller
247 SendMessage $DestDriveHw ${CB_ADDSTRING} 0 "STR:$9"
248 Push 1 ; must push something - see GetDrives documentation
249 FunctionEnd
251 Function warningPage
253 !insertmacro MUI_HEADER_TEXT $(WarningPage_Title) $(WarningPage_Title2)
255 nsDialogs::Create 1018
257 ${NSD_CreateLabel} 0 0 100% 80% $(WarningPage_Text)
258 Pop $Label
260 nsDialogs::Show
261 FunctionEnd
263 Function ExtractIt
264 ; Code taken from 7zarchive.nsh (c) 2008 qwertymodo
266 InitPluginsDir
267 File /oname=$PLUGINSDIR\7z.exe "${NSISDIR}\plugins\7z.exe"
268 File /oname=$PLUGINSDIR\7z.dll "${NSISDIR}\plugins\7z.dll"
270 ClearErrors
272 Exch $0 ; ADDITIONAL_PARAMETERS (added to the end of the program call)
273 Exch 1
274 Exch $1 ; EXTRACT_PATHS (either "fullpaths" or "nopaths"; defaults to nopaths)
275 Exch 2
276 Exch $2 ; DESTINATION_FOLDER
277 Exch 3
278 Exch $3 ; FILE_FILTER (if blank, extracts all files; allows for wildcards, e.g. "*.doc")
279 Exch 4
280 Exch $4 ; SOURCE_ARCHIVE
281 Push $5
283 ;Extract all files if no filter specified
284 StrCmp $3 "" +2 0
285 StrCpy $3 "$\"$3$\""
287 ;Default folder if not specified
288 StrCmp $2 "" 0 GotFolder
289 !insertmacro GetParent
290 ${GetParent} "$4" $2
291 !insertmacro GetBaseName
292 ${GetBaseName} "$4" $5
293 StrCpy $2 "$2\$5"
295 GotFolder:
296 CreateDirectory $2
297 StrCmp $1 "fullpaths" 0 +2
298 StrCpy $5 "x"
299 StrCmp $1 "nopaths" +2 0
300 StrCmp $1 "" 0 +2
301 StrCpy $5 "e"
303 nsExec::ExecToLog '"$PLUGINSDIR\7z.exe" x $\"$4$\" $\"-o$2$\" $3 $0'
305 Pop $0 ;nsExec return value
307 Pop $5
308 Pop $4
309 Pop $0
310 Pop $1
311 Pop $2
312 Pop $3
314 FunctionEnd
316 !macro _ExtractFromArchive SOURCE_ARCHIVE FILE_FILTER DESTINATION_FOLDER EXTRACT_PATHS ADDITIONAL_PARAMETERS
317 Push "${SOURCE_ARCHIVE}"
318 Push "${FILE_FILTER}"
319 Push "${DESTINATION_FOLDER}"
320 Push "${EXTRACT_PATHS}"
321 Push "${ADDITIONAL_PARAMETERS}"
322 Call ExtractIt
323 !macroend
325 !define ExtractFromArchive '!insertmacro "_ExtractFromArchive"'
328 Function .onInit
330 !insertmacro MUI_LANGDLL_DISPLAY
332 FunctionEnd
334 # Section #######################################
337 Section "iso2usb" main
338 InitPluginsDir
339 File /oname=$PLUGINSDIR\syslinux.exe "${NSISDIR}\plugins\syslinux.exe"
341 SetShellVarContext all
343 ; Extract files from archive
344 DetailPrint $(Iso2USB_Extract)
345 ${ExtractFromArchive} "$IsoFile" "" "$DestDrive" "" "-y -x![BOOT]*"
347 ; Create syslinux directory and files
348 Var /GLOBAL BootDir
349 StrCpy $BootDir $DestDrive -1
350 StrCpy $BootDir "$BootDir\boot"
351 IfFileExists "$BootDir\syslinux\syslinux.cfg" SkipCreateSyslinux CreateSyslinux
352 CreateSyslinux:
353 DetailPrint $(Iso2USB_CreateSyslinux)
354 CreateDirectory "$BootDir\syslinux"
355 CopyFiles "$BootDir\isolinux\*.*" "$BootDir\syslinux"
356 Rename "$BootDir\syslinux\isolinux.cfg" "$BootDir\syslinux\syslinux.cfg"
358 SkipCreateSyslinux:
359 ; Execute syslinux on the drive
360 StrCpy $R0 $DestDrive -1 ; remove \ for syslinux
361 ClearErrors
362 DetailPrint $(Iso2USB_ExecuteSyslinux)
363 ExecWait '$PLUGINSDIR\syslinux.exe -maf -d boot\syslinux $R0' $R8
364 DetailPrint "Return $R8"
366 Banner::destroy
367 ${If} $R8 != 0
368 MessageBox MB_ICONEXCLAMATION|MB_OK $(Iso2USB_WarningSyslinux)
369 ${EndIf}
371 SectionEnd