tazusb rev 97
Move tazusb.nsi to win32 directory.
author | Eric Joseph-Alexandre <erjo@slitaz.org> |
---|---|
date | Thu Feb 09 08:18:32 2012 +0100 (2012-02-09) |
parents | 99dc5e340698 |
children | 2700a1ca2a0e |
files | win32/tazusb.nsi |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/win32/tazusb.nsi Thu Feb 09 08:18:32 2012 +0100 1.3 @@ -0,0 +1,347 @@ 1.4 +; Tazusb 1.5 +; Windows installer for Slitaz 1.6 +; (c) 2009 Cedric Tissieres (slitaz@objectif-securite.ch) 1.7 +; You'll need to put 7z.exe and 7z.dll from http://www.7-zip.org/ and syslinux.exe from http://syslinux.zytor.com/ 1.8 +; in the NSIS plugins directory before compiling the script. Adapt the FROM_DIR constant too. 1.9 +; To add a translation, add the corresponding "!insertmacro MUI_LANGUAGE" and translates all the LangString you'll find below. 1.10 + 1.11 +!define NAME "TazUSB - SliTaz LiveUSB utility " 1.12 +!define FILENAME "tazusb" 1.13 +!define VERSION "v0.2" 1.14 +!define FROM_DIR "C:\ophcrack\livecd" 1.15 + 1.16 +SetCompressor LZMA 1.17 +CRCCheck On 1.18 +XPStyle on 1.19 + 1.20 +!include "MUI2.nsh" 1.21 +!include "FileFunc.nsh" 1.22 + 1.23 + 1.24 +# MUI Settings ##################################### 1.25 +;************** 1.26 + 1.27 +; Interface settings 1.28 +!define MUI_FINISHPAGE_NOAUTOCLOSE 1.29 +!define MUI_HEADERIMAGE 1.30 +!define MUI_HEADERIMAGE_BITMAP "${FROM_DIR}\slitaz-logo-nsis.bmp" 1.31 +!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH 1.32 + 1.33 +; Welcome page 1.34 +!define MUI_WELCOMEPAGE_TITLE $(Welcome_Title) 1.35 +!define MUI_WELCOMEPAGE_TEXT $(Welcome_Text) 1.36 +!insertmacro MUI_PAGE_WELCOME 1.37 +; ISO page 1.38 +Var IsoFileHw 1.39 +Var IsoFile 1.40 +Var Label 1.41 +Var Label2 1.42 +Page custom isoFilePage 1.43 +; Drive page 1.44 +Var DestDriveHW 1.45 +Var DestDrive 1.46 +Page custom drivePage 1.47 +; Warning page 1.48 +Page custom warningPage 1.49 +; Instfiles page 1.50 +!insertmacro MUI_PAGE_INSTFILES 1.51 +; Finish page 1.52 +!define MUI_FINISHPAGE_TITLE $(Finish_Title) 1.53 +!define MUI_FINISHPAGE_TEXT $(Finish_Text) 1.54 +!define MUI_FINISHPAGE_LINK $(Finish_Link) 1.55 +!define MUI_FINISHPAGE_LINK_LOCATION "http://slitaz.org" 1.56 +!insertmacro MUI_PAGE_FINISH 1.57 + 1.58 +; Language files 1.59 +!insertmacro MUI_LANGUAGE "English" ;first language is the default language 1.60 +!insertmacro MUI_LANGUAGE "French" 1.61 +!insertmacro MUI_LANGUAGE "Portuguese" 1.62 + 1.63 + 1.64 +; Reserve files 1.65 + 1.66 +; MUI end ------ 1.67 + 1.68 +; General Parameters 1.69 +Name "${NAME} ${VERSION}" 1.70 +OutFile "${FROM_DIR}\${FILENAME}.exe" 1.71 + 1.72 +# Languages ###################################### 1.73 + 1.74 +; English 1.75 +LangString Welcome_Title ${LANG_ENGLISH} "${NAME}" 1.76 +LangString Welcome_Text ${LANG_ENGLISH} "Welcome to TazUSB. This tool will help you install Slitaz on a USB drive." 1.77 +LangString Finish_Title ${LANG_ENGLISH} "TazUSB has completed Slitaz installation." 1.78 +LangString Finish_Text ${LANG_ENGLISH} "Slitaz is now installed on your USB drive and the drive is bootable." 1.79 +LangString Finish_Link ${LANG_ENGLISH} "Slitaz website" 1.80 +LangString IsoPage_Title ${LANG_ENGLISH} "Select ISO file" 1.81 +LangString IsoPage_Title2 ${LANG_ENGLISH} "Choose the ISO image which will be installed on your USB drive." 1.82 +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." 1.83 +LangString IsoPage_Input ${LANG_ENGLISH} "Slitaz ISO File" 1.84 +LangString IsoFile ${LANG_ENGLISH} "ISO file|*.iso" 1.85 +LangString DrivePage_Title ${LANG_ENGLISH} "Choose USB drive location" 1.86 +LangString DrivePage_Title2 ${LANG_ENGLISH} "Choose the USB drive in which to install Slitaz." 1.87 +LangString DrivePage_Text ${LANG_ENGLISH} "TazUSB will install Slitaz in the following drive. Make sure that this drive can be safely deleted! Click Next to continue." 1.88 +LangString DrivePage_Input ${LANG_ENGLISH} "Destination USB Drive" 1.89 +LangString WarningPage_Title ${LANG_ENGLISH} "Warning!" 1.90 +LangString WarningPage_Title2 ${LANG_ENGLISH} "TazUSB is ready to install Slitaz on the selected drive." 1.91 +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." 1.92 +LangString Iso2USB_Extract ${LANG_ENGLISH} "Extract files from $IsoFile" 1.93 +LangString Iso2USB_CreateSyslinux ${LANG_ENGLISH} "Create syslinux configuration files on $DestDrive" 1.94 +LangString Iso2USB_ExecuteSyslinux ${LANG_ENGLISH} "Execute syslinux on $R0" 1.95 +LangString Iso2USB_WarningSyslinux ${LANG_ENGLISH} "An error ($R8) occurred when executing syslinux.$\r$\nYour USB drive won't be bootable..." 1.96 + 1.97 +; French 1.98 +LangString Welcome_Title ${LANG_FRENCH} "${NAME}" 1.99 +LangString Welcome_Text ${LANG_FRENCH} "Bienvenue dans TazUSB. Cet outil va vous aider à installer Slitaz sur une clé USB." 1.100 +LangString Finish_Title ${LANG_FRENCH} "L'installation a été terminée par TazUSB." 1.101 +LangString Finish_Text ${LANG_FRENCH} "Slitaz est maintenant installé sur votre clé USB et celle-ci est démarrable." 1.102 +LangString Finish_Link ${LANG_FRENCH} "Site web de Slitaz" 1.103 +LangString IsoPage_Title ${LANG_FRENCH} "Sélectionner un fichier ISO" 1.104 +LangString IsoPage_Title2 ${LANG_FRENCH} "Choisissez l'image ISO qui sera installée sur votre clé USB." 1.105 +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." 1.106 +LangString IsoPage_Input ${LANG_FRENCH} "Image ISO Slitaz" 1.107 +LangString IsoFile ${LANG_FRENCH} "Image ISO|*.iso" 1.108 +LangString DrivePage_Title ${LANG_FRENCH} "Sélectionner un lecteur USB" 1.109 +LangString DrivePage_Title2 ${LANG_FRENCH} "Choisissez le lecteur USB sur lequel sera installé Slitaz" 1.110 +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." 1.111 +LangString DrivePage_Input ${LANG_FRENCH} "Lecteur USB de destination" 1.112 +LangString WarningPage_Title ${LANG_FRENCH} "Attention!" 1.113 +LangString WarningPage_Title2 ${LANG_FRENCH} "TazUSB est prêt à installer Slitaz sur le lecteur sélectionné." 1.114 +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." 1.115 +LangString Iso2USB_Extract ${LANG_FRENCH} "Extraction des fichiers de $IsoFile" 1.116 +LangString Iso2USB_CreateSyslinux ${LANG_FRENCH} "Création de la configuration syslinux sur $DestDrive" 1.117 +LangString Iso2USB_ExecuteSyslinux ${LANG_FRENCH} "Exécution de syslinux sur $R0" 1.118 +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..." 1.119 + 1.120 +; Portuguese 1.121 +LangString Welcome_Title ${LANG_PORTUGUESE} "${NAME}" 1.122 +LangString Welcome_Text ${LANG_PORTUGUESE} "Bem-vindo ao TazUSB. Este aplicativo o ajudará a instalar o SliTaz em um drive USB." 1.123 +LangString Finish_Title ${LANG_PORTUGUESE} "O TazUSB finalizou a instalação do SliTaz." 1.124 +LangString Finish_Text ${LANG_PORTUGUESE} "O SliTaz está instalado em seu drive USB e o processo de boot agora pode ser feito." 1.125 +LangString Finish_Link ${LANG_PORTUGUESE} "Site do Slitaz" 1.126 +LangString IsoPage_Title ${LANG_PORTUGUESE} "Selecionar arquivo ISO" 1.127 +LangString IsoPage_Title2 ${LANG_PORTUGUESE} "Escolher imagem ISO a ser instalada no drive USB." 1.128 +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." 1.129 +LangString IsoPage_Input ${LANG_PORTUGUESE} "Arquivo ISO do SliTaz" 1.130 +LangString IsoFile ${LANG_PORTUGUESE} "Arquivo ISO|*.iso" 1.131 +LangString DrivePage_Title ${LANG_PORTUGUESE} "Escolha a localização do drive USB" 1.132 +LangString DrivePage_Title2 ${LANG_PORTUGUESE} "Escolha o drive USB no qual o SliTaz será instalado." 1.133 +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." 1.134 +LangString DrivePage_Input ${LANG_PORTUGUESE} "Drive USB de destino" 1.135 +LangString WarningPage_Title ${LANG_PORTUGUESE} "Aviso!" 1.136 +LangString WarningPage_Title2 ${LANG_PORTUGUESE} "O TazUSB está pronto para instalar o SliTaz no drive selecionado." 1.137 +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." 1.138 +LangString Iso2USB_Extract ${LANG_PORTUGUESE} "Extrair arquivos de $IsoFile" 1.139 +LangString Iso2USB_CreateSyslinux ${LANG_PORTUGUESE} "Criar arquivos de configuração do syslinux em $DestDrive" 1.140 +LangString Iso2USB_ExecuteSyslinux ${LANG_PORTUGUESE} "Executar syslinux em $R0" 1.141 +LangString Iso2USB_WarningSyslinux ${LANG_PORTUGUESE} "Um erro ($R8) ocorreu durante a execução do syslinux.$\r$\nSeu drive USB não será inicializável..." 1.142 + 1.143 +# Functions ####################################### 1.144 + 1.145 +Function isoFilePage 1.146 + 1.147 + !insertmacro MUI_HEADER_TEXT $(IsoPage_Title) $(IsoPage_Title2) 1.148 + 1.149 + nsDialogs::Create 1018 1.150 + 1.151 + ${If} $IsoFile == "" 1.152 + GetDlgItem $6 $HWNDPARENT 1 ; Get "Next" control handle 1.153 + EnableWindow $6 0 ; disable "Next" control 1.154 + ${EndIf} 1.155 + 1.156 + ${NSD_CreateLabel} 0 0 100% 30 $(IsoPage_Text) 1.157 + Pop $Label 1.158 + 1.159 + ${NSD_CreateLabel} 15 102 100% 15 $(IsoPage_Input) 1.160 + Pop $Label2 1.161 + 1.162 + nsDialogs::CreateControl EDIT ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL}|${ES_READONLY} ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} 10 120 85% 20 $IsoFile 1.163 + Pop $IsoFileHw 1.164 + 1.165 + ${NSD_CreateBrowseButton} 89% 120 7% 20 ... 1.166 + Var /GLOBAL IsoFile_BrowseButton 1.167 + Pop $IsoFile_BrowseButton 1.168 + GetFunctionAddress $0 OnClick_IsoFile_BrowseButton 1.169 + nsDialogs::OnClick $IsoFile_BrowseButton $0 1.170 + 1.171 + nsDialogs::Show 1.172 +FunctionEnd 1.173 + 1.174 +Function OnClick_IsoFile_BrowseButton 1.175 + 1.176 + 1.177 +nsDialogs::SelectFileDialog /NOUNLOAD open "" $(IsoFile) 1.178 +Pop $0 1.179 + 1.180 +${If} $0 != "" 1.181 + ${NSD_SetText} $IsoFileHw $0 1.182 + StrCpy $IsoFile "$0" 1.183 + GetDlgItem $6 $HWNDPARENT 1 ; Get "Next" control handle 1.184 + EnableWindow $6 1 ; enable "Next" control 1.185 +${EndIf} 1.186 + 1.187 +FunctionEnd 1.188 + 1.189 +Function drivePage 1.190 + 1.191 + !insertmacro MUI_HEADER_TEXT $(DrivePage_Title) $(DrivePage_Title2) 1.192 + 1.193 + nsDialogs::Create 1018 1.194 + 1.195 + ${If} $DestDrive == "" 1.196 + GetDlgItem $6 $HWNDPARENT 1 ; Get "Next" control handle 1.197 + EnableWindow $6 0 ; disable "Next" control 1.198 + ${EndIf} 1.199 + 1.200 + ${NSD_CreateLabel} 0 0 100% 30 $(DrivePage_Text) 1.201 + Pop $Label 1.202 + 1.203 + ${NSD_CreateLabel} 15 102 100% 15 $(DrivePage_Input) 1.204 + Pop $Label2 1.205 + 1.206 + ${NSD_CreateDroplist} 10 120 85% 20 "" 1.207 + Pop $DestDriveHw 1.208 + ${NSD_OnChange} $DestDriveHw db_select.onchange 1.209 + ${GetDrives} "FDD+HDD" driveListFiller 1.210 + ${If} $DestDrive != "" 1.211 + ${NSD_CB_SelectString} $DestDriveHw $DestDrive 1.212 + ${EndIf} 1.213 + 1.214 + nsDialogs::Show 1.215 +FunctionEnd 1.216 + 1.217 +Function db_select.onchange 1.218 + Pop $DestDriveHw 1.219 + ${NSD_GetText} $DestDriveHw $0 1.220 + StrCpy $DestDrive "$0" 1.221 + GetDlgItem $6 $HWNDPARENT 1 ; Get "Next" control handle 1.222 + EnableWindow $6 1 ; enable "Next" control 1.223 +FunctionEnd 1.224 + 1.225 +Function driveListFiller 1.226 + SendMessage $DestDriveHw ${CB_ADDSTRING} 0 "STR:$9" 1.227 + Push 1 ; must push something - see GetDrives documentation 1.228 +FunctionEnd 1.229 + 1.230 +Function warningPage 1.231 + 1.232 + !insertmacro MUI_HEADER_TEXT $(WarningPage_Title) $(WarningPage_Title2) 1.233 + 1.234 + nsDialogs::Create 1018 1.235 + 1.236 + ${NSD_CreateLabel} 0 0 100% 80% $(WarningPage_Text) 1.237 + Pop $Label 1.238 + 1.239 + nsDialogs::Show 1.240 +FunctionEnd 1.241 + 1.242 +Function ExtractIt 1.243 + ; Code taken from 7zarchive.nsh (c) 2008 qwertymodo 1.244 + 1.245 + InitPluginsDir 1.246 + File /oname=$PLUGINSDIR\7z.exe "${NSISDIR}\plugins\7z.exe" 1.247 + File /oname=$PLUGINSDIR\7z.dll "${NSISDIR}\plugins\7z.dll" 1.248 + 1.249 + ClearErrors 1.250 + 1.251 + Exch $0 ; ADDITIONAL_PARAMETERS (added to the end of the program call) 1.252 + Exch 1 1.253 + Exch $1 ; EXTRACT_PATHS (either "fullpaths" or "nopaths"; defaults to nopaths) 1.254 + Exch 2 1.255 + Exch $2 ; DESTINATION_FOLDER 1.256 + Exch 3 1.257 + Exch $3 ; FILE_FILTER (if blank, extracts all files; allows for wildcards, e.g. "*.doc") 1.258 + Exch 4 1.259 + Exch $4 ; SOURCE_ARCHIVE 1.260 + Push $5 1.261 + 1.262 + ;Extract all files if no filter specified 1.263 + StrCmp $3 "" +2 0 1.264 + StrCpy $3 "$\"$3$\"" 1.265 + 1.266 + ;Default folder if not specified 1.267 + StrCmp $2 "" 0 GotFolder 1.268 + !insertmacro GetParent 1.269 + ${GetParent} "$4" $2 1.270 + !insertmacro GetBaseName 1.271 + ${GetBaseName} "$4" $5 1.272 + StrCpy $2 "$2\$5" 1.273 + 1.274 + GotFolder: 1.275 + CreateDirectory $2 1.276 + StrCmp $1 "fullpaths" 0 +2 1.277 + StrCpy $5 "x" 1.278 + StrCmp $1 "nopaths" +2 0 1.279 + StrCmp $1 "" 0 +2 1.280 + StrCpy $5 "e" 1.281 + 1.282 + nsExec::ExecToLog '"$PLUGINSDIR\7z.exe" x $\"$4$\" $\"-o$2$\" $3 $0' 1.283 + 1.284 + Pop $0 ;nsExec return value 1.285 + 1.286 + Pop $5 1.287 + Pop $4 1.288 + Pop $0 1.289 + Pop $1 1.290 + Pop $2 1.291 + Pop $3 1.292 + 1.293 +FunctionEnd 1.294 + 1.295 +!macro _ExtractFromArchive SOURCE_ARCHIVE FILE_FILTER DESTINATION_FOLDER EXTRACT_PATHS ADDITIONAL_PARAMETERS 1.296 + Push "${SOURCE_ARCHIVE}" 1.297 + Push "${FILE_FILTER}" 1.298 + Push "${DESTINATION_FOLDER}" 1.299 + Push "${EXTRACT_PATHS}" 1.300 + Push "${ADDITIONAL_PARAMETERS}" 1.301 + Call ExtractIt 1.302 +!macroend 1.303 + 1.304 +!define ExtractFromArchive '!insertmacro "_ExtractFromArchive"' 1.305 + 1.306 + 1.307 +Function .onInit 1.308 + 1.309 + !insertmacro MUI_LANGDLL_DISPLAY 1.310 + 1.311 +FunctionEnd 1.312 + 1.313 +# Section ####################################### 1.314 + 1.315 + 1.316 +Section "iso2usb" main 1.317 + InitPluginsDir 1.318 + File /oname=$PLUGINSDIR\syslinux.exe "${NSISDIR}\plugins\syslinux.exe" 1.319 + 1.320 + SetShellVarContext all 1.321 + 1.322 + ; Extract files from archive 1.323 + DetailPrint $(Iso2USB_Extract) 1.324 + ${ExtractFromArchive} "$IsoFile" "" "$DestDrive" "" "-y -x![BOOT]*" 1.325 + 1.326 + ; Create syslinux directory and files 1.327 + Var /GLOBAL BootDir 1.328 + StrCpy $BootDir $DestDrive -1 1.329 + StrCpy $BootDir "$BootDir\boot" 1.330 + IfFileExists "$BootDir\syslinux\syslinux.cfg" SkipCreateSyslinux CreateSyslinux 1.331 + CreateSyslinux: 1.332 + DetailPrint $(Iso2USB_CreateSyslinux) 1.333 + CreateDirectory "$BootDir\syslinux" 1.334 + CopyFiles "$BootDir\isolinux\*.*" "$BootDir\syslinux" 1.335 + Rename "$BootDir\syslinux\isolinux.cfg" "$BootDir\syslinux\syslinux.cfg" 1.336 + 1.337 + SkipCreateSyslinux: 1.338 + ; Execute syslinux on the drive 1.339 + StrCpy $R0 $DestDrive -1 ; remove \ for syslinux 1.340 + ClearErrors 1.341 + DetailPrint $(Iso2USB_ExecuteSyslinux) 1.342 + ExecWait '$PLUGINSDIR\syslinux.exe -maf -d boot\syslinux $R0' $R8 1.343 + DetailPrint "Return $R8" 1.344 + 1.345 + Banner::destroy 1.346 + ${If} $R8 != 0 1.347 + MessageBox MB_ICONEXCLAMATION|MB_OK $(Iso2USB_WarningSyslinux) 1.348 + ${EndIf} 1.349 + 1.350 +SectionEnd