-
-
Save S60Team/36a48718640205e14b8a068b2b809c1f to your computer and use it in GitHub Desktop.
Silent install Visual C++, DirectX, PhysX, .NET Framework etc.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;*********************************************** | |
; Установщик программ by Гендель Вова aka S60Team | |
; Что умеет: | |
; - Определять версию Windows (XP–11). | |
; - Определять разрядность ОС (x86/x64). | |
; - Определять тип раздела (HDD, USB, CDROM). | |
; - Получать свободное место на разделе (в Гб). | |
; - Определять букву системного раздела (C:). | |
; - Определять папку пользователя: | |
; C:\Documents and Settings\Профиль | C:\Users\Профиль. | |
; - Определять, существует ли файл или папка. | |
; - Читать из реестра. Записывать в реестр. | |
; - Дописывать строки в текстовый файл. | |
; - Распаковывать архив с помощью 7zip. | |
; - Проверять архив на ошибки. | |
; - Копировать файл в указанный путь. | |
; - Запускаться с аргументами с возможностью | |
; передачи их значений в переменную. | |
; - Запускать только один процесс установки. | |
; | |
;*********************************************** | |
; Строгая проверка на ошибки: | |
!pragma warning error all | |
; | |
;*********************************************** | |
; Определения: | |
; Включить простой стиль (как в Win2000) | |
!define OldLook | |
; | |
; Включить подсказки (описания) к секциям: | |
;!define DESCSON | |
; | |
; Компилировать с отладкой: | |
!define Dabug | |
; | |
; Указываем дату и время запуска для файла отладки/отчёта: | |
; день.месяц.год час:минута:секунда | |
!define /date MyDATE "%d.%m.%Y %H:%M:%S" | |
; | |
; Указываем дату для файла отладки/отчёта: | |
!define /date MyDATE2 "%d.%m.%Y" | |
; | |
;*********************************************** | |
; Переменные: | |
Var /GLOBAL OS_Version ; Версия ОС: 4 это Windows 7 | |
Var /GLOBAL FreeSpaceInPD ; Свободное место в папке Portable | |
Var /GLOBAL PortableDir ; Папка для переносных программ: (C:|D:)\Portable | |
Var /GLOBAL is64 ; Битность ОС: 1 или 0 (x64 или x86) | |
Var /GLOBAL OS_Drive ; Буква системного диска: C: | |
Var /GLOBAL TempRegKey ; Временная переменная для чтения из реестра | |
Var /GLOBAL OSvText ; Текст версии ОС | |
Var /GLOBAL OSbit ; Текст битности ОС | |
Var /GLOBAL VisualC_vers ; Текст наличия Visual C++ | |
Var /GLOBAL NETv_text ; Текст наличия .NET | |
Var /GLOBAL UsrName ; Имя пользователя | |
Var /GLOBAL OSreg1 ; Версия ядра Windows: 6.3 и т.д.) | |
Var /GLOBAL OSreg2 ; Ключ реестра только в Windows 10 | |
Var /GLOBAL OSreg3 ; Версия сборки Windows: 7601, 22000... | |
Var /GLOBAL TotalRAM ; Всего ОЗУ | |
;Var /GLOBAL Time ; Текущее время | |
!ifdef Dabug | |
Var /GLOBAL Debug ; Отладка через ключ /d1 | |
!endif | |
;*********************************************** | |
; Исправить ошибку "File is ANSI": false | |
unicode true | |
; | |
; Поддержка ОС: Все | |
ManifestSupportedOS all | |
; | |
; Указываем название программы: | |
!define ProgramName "Shadowkitty" | |
; | |
Name "${ProgramName}" | |
; | |
; Версия программмы: | |
!define VERSION 3.2.5.9 | |
; | |
; Информация "О программе": | |
VIProductVersion "${VERSION}" | |
VIAddVersionKey ProductName "${ProgramName}" | |
VIAddVersionKey Comments "Silently install common programms: DirectX, .NET, etc." | |
VIAddVersionKey CompanyName "S60Team" | |
VIAddVersionKey LegalCopyright "Gendel Vladimir vova.gendel@gmail.com" | |
VIAddVersionKey FileDescription "${ProgramName}. Silently install common programms: DirectX, .NET, etc. Source code: https://is.gd/onoluw" | |
VIAddVersionKey FileVersion "${VERSION}" | |
VIAddVersionKey ProductVersion "${VERSION}" | |
VIAddVersionKey InternalName "${ProgramName}" | |
VIAddVersionKey LegalTrademarks "${ProgramName} made by Gendel Vladimir Grigorievich aka S60Team" | |
VIAddVersionKey OriginalFilename "${ProgramName}.exe" | |
VIAddVersionKey PrivateBuild "${VERSION}" | |
VIAddVersionKey SpecialBuild "${VERSION}" | |
; | |
; Проверка контрольных сумм включена: | |
CRCCheck On | |
; | |
!ifdef OldLook | |
; Включаем стиль Windows XP: | |
XPStyle on | |
; Отключить иконку сверху окна: | |
WindowIcon Off | |
!endif | |
; | |
; Показывать подробные сведения установки: | |
ShowInstDetails show | |
; | |
; Требуем привилегии Администатора: | |
RequestExecutionLevel admin | |
; | |
; Указываем тип и настройки сжатия инсталлятора: 7-zip, Максимум | |
SetCompress Auto | |
SetCompressor /SOLID lzma | |
SetCompressorDictSize 32 | |
SetDatablockOptimize On | |
; | |
!ifdef OldLook | |
LoadLanguageFile "${NSISDIR}\Contrib\Language files\Russian.nlf" | |
OutFile "${ProgramName}.exe" ; Устанавливаем имя файла (программы). | |
Icon "icons\Launcher_min.ico" ; Задаём иконку. | |
CheckBitmap "icons\minc.bmp" | |
Caption "${ProgramName}" ; Имя окна: Installation Options | |
; Удалить брэндинг инсталлятора: | |
BrandingText " " | |
;LangString ^ComponentsText ${LANG_RUSSIAN} "Russian component page" | |
ComponentText "$OSvText $OSbit. $PortableDir, $FreeSpaceInPD Gb.$\nVC++: $VisualC_vers.$\n.NET: $NETv_text" " " " " | |
!else | |
;!define MUI_HEADERIMAGE " " | |
!define MUI_PAGE_HEADER_SUBTEXT " " | |
!define MUI_PAGE_HEADER_TEXT " " | |
!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH | |
;!define MUI_CUSTOMFUNCTION_GUIINIT HideHeaderImage | |
;!define MUI_HEADERIMAGE_BITMAP "icons\nsis3-metro.bmp" | |
; | |
OutFile "${ProgramName}.exe" ; Устанавливаем имя файла (программы). | |
!include "MUI2.nsh" ; Включаем MUI2. Уже содержит LogicLib! | |
;!define MUI_ABORTWARNING ; Показать сообщение при отмене установки. | |
!ifdef DESCSON | |
!define MUI_COMPONENTSPAGE_SMALLDESC ; Делаем описание меньше и уже. | |
!else | |
!define MUI_COMPONENTSPAGE_NODESC ; Убираем описание. Совсем | |
!endif | |
!define MUI_ICON "icons\Launcher.ico" ; Задаём иконку. | |
; ${NSISDIR}\Contrib\Graphics\Checks\modern.bmp - Стиль чекбоксов | |
!define MUI_COMPONENTSPAGE_CHECKBITMAP "icons\minc.bmp" ; Стиль чекбоксов. | |
; Убираем текст вверху компонентов: | |
!define MUI_COMPONENTSPAGE_TEXT_TOP "$OSvText $OSbit. $PortableDir, $FreeSpaceInPDГб.$\nVC++: $VisualC_vers.$\n.NET: $NETv_text" | |
; Убираем текст слева от компонентов: | |
!define MUI_COMPONENTSPAGE_TEXT_COMPLIST " " | |
; Убираем текст при завершении установки: | |
!define MUI_INSTFILESPAGE_FINISHHEADER_TEXT " " | |
!define MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT " " | |
!endif | |
; | |
;*********************************************** | |
/* | |
Function HideHeaderImage | |
!if "${MUI_SYSVERSION}" >= 2.0 | |
ShowWindow $mui.Header.Image 0 | |
!else | |
GetDlgItem $0 $hwndParent 0x416 | |
ShowWindow $0 0 | |
!endif | |
FunctionEnd | |
*/ | |
;*********************************************** | |
!ifdef OldLook | |
; Добавить понятные If/Else, Switch/Case и прочее: | |
!include LogicLib.nsh | |
!endif | |
; | |
; Добавить библотеку управления файлами: | |
!include FileFunc.nsh | |
; | |
;*********************************************** | |
; Указываем Страницы: | |
!ifdef OldLook | |
Page components | |
Page instfiles | |
!else | |
; Создаём страницу компонентов: | |
!insertmacro MUI_PAGE_COMPONENTS | |
!insertmacro MUI_PAGE_INSTFILES | |
!insertmacro MUI_LANGUAGE "Russian" | |
; и добавляем описания: | |
!ifdef DESCSON | |
LangString DESC_FF ${LANG_RUSSIAN} "Firefox последний" | |
!endif | |
!endif | |
; | |
;*********************************************** | |
; Макросы для создания функций с параметрами: 1 параметр | |
!ifdef Dabug | |
!macro _Call0 func param0 | |
Push $3 | |
StrCpy $3 '${param0}' | |
Call ${func} | |
Pop $3 | |
!macroend | |
!endif | |
; 2 параметра: UnPack function. | |
!macro _CallU func param1 param2 | |
Push $R1 | |
Push $R2 | |
StrCpy $R1 '${param1}' | |
StrCpy $R2 '${param2}' | |
Call ${func} | |
Pop $R2 | |
Pop $R1 | |
!macroend | |
; | |
; 5 параметров: AIO, UnSelect. | |
!macro _AIOCall func param1 param2 param3 param4 param5 | |
Push $R1 | |
Push $R2 | |
Push $R3 | |
Push $R4 | |
Push $R5 | |
StrCpy $R1 '${param1}' | |
StrCpy $R2 '${param2}' | |
StrCpy $R3 '${param3}' | |
StrCpy $R4 '${param4}' | |
StrCpy $R5 '${param5}' | |
Call ${func} | |
Pop $R5 | |
Pop $R4 | |
Pop $R3 | |
Pop $R2 | |
Pop $R1 | |
!macroend | |
; | |
; Функции с параметрами: | |
; Включить журнал (запись в файл): | |
; Макрос для записи в файл отладки: | |
!ifdef Dabug | |
!define LogThis "!insertmacro _Log0" | |
!macro _Log0 param0 | |
!insertmacro _Call0 LogFunc '${param0}' | |
!macroend | |
Function LogFunc | |
StrCpy $R9 $SYSDIR 2 | |
ClearErrors | |
ReadRegStr $1 HKLM "System\CurrentControlSet\Control\ComputerName\ActiveComputerName" "ComputerName" | |
IfErrors 0 +3 | |
MessageBox MB_ICONEXCLAMATION "Error! Can't get info from Registry!" | |
Goto Log_end | |
IfFileExists "$R9\Users" 0 +3 | |
StrCpy $2 "$PROFILE" "" 9 ; 2 is User in C:\Users\User | |
Goto +2 | |
StrCpy $2 "$PROFILE" "" 26 ; 2 is User in C:\Documents and Settings\User | |
ClearErrors | |
ReadRegStr $4 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentVersion" | |
IfErrors 0 +3 | |
StrCpy $5 "" | |
Goto +2 | |
StrCpy $5 "__$4" | |
ClearErrors | |
IfFileExists "$EXEDIR\PCs" 0 +3 | |
FileOpen $0 "$EXEDIR\PCs\${MyDATE2}_$1_$2$5.txt" a | |
Goto +2 | |
FileOpen $0 "$EXEDIR\${MyDATE2}_$1_$2$5.txt" a | |
FileSeek $0 0 END | |
FileWrite $0 "$3$\r$\n" | |
FileClose $0 | |
Pop $0 | |
Log_end: | |
StrCpy $0 "" | |
StrCpy $1 "" | |
StrCpy $2 "" | |
StrCpy $3 "" | |
StrCpy $4 "" | |
StrCpy $5 "" | |
StrCpy $R9 "" | |
FunctionEnd | |
!endif | |
; | |
; Распаковка архива: | |
; ${UnZIP} "Basilisk" "$PortableDir" | |
!define UnZIP "!insertmacro _UNZ" | |
!macro _UNZ param1 param2 | |
!insertmacro _CallU UNZFunc '${param1}' '${param2}' | |
!macroend | |
Function UNZFunc | |
ClearErrors # Чистим ошибки. | |
; Создаём папку Portable, если не существует: | |
; Определяем, сколько свободного места места: | |
StrCpy $R9 $PortableDir 2 | |
${DriveSpace} $R9 "/D=F /S=G" $9 | |
; Если больше 2Гб, создаём папку Portable: | |
${If} $9 > 2 | |
${IfNot} ${FileExists} "$PortableDir\*.*" ; Если папки нет, создаём: | |
DetailPrint "Папка $PortableDir не существует. Создаём..." | |
CreateDirectory $PortableDir | |
${EndIf} | |
${Else} ; Если места меньше чем 2Гб, ничего не распаковывем: | |
DetailPrint "Свободного места меньше чем 2Гб!" | |
DetailPrint "Распаковка $R1 отменена!" | |
; Чистим мусор: | |
StrCpy $R9 "" | |
StrCpy $9 "" | |
Goto Unz_end | |
${EndIf} | |
; Чистим мусор: | |
StrCpy $R9 "" | |
StrCpy $9 "" | |
; | |
ClearErrors # Чистим ошибки. | |
; Проверяем присутствие архива: | |
; Если архива нет: идём к UnzNotExist и выходим из функции. | |
IfFileExists "Programs\$R1" 0 UnzNotExist | |
DetailPrint "UnZIP: Распаковываю $R1..." # Архив есть. | |
; Проверяем архив на целостность: | |
nsExec::ExecToStack '"$EXEDIR\Programs\7za.exe" t $EXEDIR\Programs\$R1 * -r' | |
Pop $1 | |
!ifdef Dabug | |
${LogThis} "$R1 UnZIP: Статус проверки: $1" | |
!endif | |
IntCmp $1 0 0 UnzCheckErr UnzCheckErr # == < > | |
DetailPrint "UnZIP: Проверка архива завершена успешно." | |
Goto +4 # Спим 250мс | |
UnzCheckErr: | |
DetailPrint "UnZIP: Ошибка проверки архива $R1!" | |
Goto Unz_end # выходим из функции. | |
Sleep 250 | |
; Теперь распаковываем архив: | |
ClearErrors | |
nsExec::ExecToStack '"$EXEDIR\Programs\7za.exe" x -bb0 -aoa -bd $EXEDIR\Programs\$R1 -o$R2' | |
Pop $0 | |
!ifdef Dabug | |
${LogThis} "$R2 UnZIP: Статус распаковки: $0" | |
!endif | |
IntCmp $0 0 Unz 0 0 # == < > | |
DetailPrint "UnZIP: Распаковка $R1 невозможна!" | |
!ifdef Dabug | |
${LogThis} "UnZIP: Распаковка $R1 невозможна!" | |
!endif | |
Goto Unz_end # Если всё плохо, выходим из функции. | |
; Если всё ОК: | |
Unz: | |
!ifdef Dabug | |
${LogThis} "${MyDATE} $R1 ($R2) распакован успешно." | |
!endif | |
DetailPrint "UnZIP: $R1 распакован успешно." | |
Goto Unz_end | |
UnzNotExist: # Архива нет. | |
DetailPrint "Ошибка! Архив не существует!" | |
Unz_end: | |
; Чистим мусор и ошибки: | |
StrCpy $R1 "" | |
StrCpy $R2 "" | |
StrCpy $0 "" | |
StrCpy $1 "" | |
ClearErrors | |
FunctionEnd | |
; | |
; Всё в одном: Копирование, Установка и Распаковка. | |
!define AIO "!insertmacro _AIO" | |
!macro _AIO param1 param2 param3 param4 param5 | |
!insertmacro _AIOCall AIOFunc '${param1}' '${param2}' '${param3}' '${param4}' '${param5}' | |
!macroend | |
Function AIOFunc | |
ClearErrors # Чистим ошибки. | |
; Создаём папку Portable, если не существует: | |
; Определяем, сколько свободного места места: | |
StrCpy $R9 $PortableDir 2 | |
${DriveSpace} $R9 "/D=F /S=G" $9 | |
; Если больше 2Гб, создаём папку Portable: | |
${If} $9 > 2 | |
${IfNot} ${FileExists} "$PortableDir\*.*" ; Если папки нет, создаём: | |
DetailPrint "Папка $PortableDir не существует. Создаём..." | |
CreateDirectory $PortableDir | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 AIO_time1 | |
${LogThis} "${MyDATE} Папка $PortableDir не существует. Создаём..." | |
AIO_time1: | |
!endif | |
${EndIf} | |
${Else} ; Если места меньше чем 2Гб, ничего не распаковывем: | |
DetailPrint "Свободного места меньше чем 2Гб!" | |
DetailPrint "Распаковка $R1 отменена!" | |
; Чистим мусор: | |
StrCpy $R9 "" | |
StrCpy $9 "" | |
Goto AIO_end | |
${EndIf} | |
; Чистим мусор: | |
StrCpy $R9 "" | |
StrCpy $9 "" | |
; | |
ClearErrors # Чистим ошибки. | |
; $R1 = тип | |
; 1: Копирование: ИмяВРеестре_иЯрлыка ФайлОткуда ПапкаКуда ФайлКуда | |
; 2: Установка: ИмяВРеестре exe аргументы ФайлДляПроверки | |
; 3: Распаковка Секция ИмяВРеестре_иЯрлыка Архив Папка\файл(в Portable) | |
; | |
# Копирование: $R1=тип $R2=ИмяВРеестре_иЯрлыка $R3=ФайлОткуда $R4=ПапкаКуда $R5=ФайлКуда | |
# ${AIO} 1 "BitSpirit Торрент" "NeNado\BitSpirit_Portable.exe" "$PortableDir\BitSpirit" "BitSpirit_Portable.exe" | |
IntCmp $R1 1 0 AIO3_error AIO2 # == < > | |
; Проверяем, есть ли файл: | |
IfFileExists "$EXEDIR\Programs\$R3" 0 AIOcopy_FEerr | |
IfFileExists "$R4\$R5" AIOcopy_err 0 | |
SetDetailsPrint none | |
CreateDirectory "$R4" # Создаём папку для распаковки: | |
ClearErrors | |
CopyFiles "$EXEDIR\Programs\$R3" "$R4\$R5" # Копируем туда файл: | |
IfErrors AIOcopy_err 0 | |
SetDetailsPrint listonly | |
Goto AIOcopy_ok | |
AIOcopy_FEerr: | |
DetailPrint "! $R3" | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 AIOcopy_dbg1 | |
${LogThis} "${MyDATE} $R3 Не существует!" | |
AIOcopy_dbg1: | |
!endif | |
AIOcopy_err: | |
SetDetailsPrint listonly | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Копирование $R4\$R5 не выполнено!" | |
!endif | |
DetailPrint "Ошибка: $R4\$R5" | |
IfFileExists "$R4\$R5" 0 +2 | |
DetailPrint "Файл уже существует." | |
DetailPrint "Копирование не выполнено!" | |
Goto AIOcopy_end | |
AIOcopy_ok: | |
IfFileExists "$DESKTOP\$R2.lnk" 0 AIOcopy_NoLNK | |
DetailPrint "Ярлык $R2 уже существует!" | |
Goto AIOcopy_success | |
AIOcopy_NoLNK: | |
SetDetailsPrint none | |
CreateShortcut "$DESKTOP\$R2.lnk" "$R4\$R5" | |
SetDetailsPrint listonly | |
Goto AIOcopy_success | |
AIOcopy_success: | |
; Пишем в Реестр и Журнал: | |
WriteRegStr HKCU "Software\S60Team" "$R2" "Installed" | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 AIOcopy_dbg2 | |
${LogThis} "${MyDATE} $R2 скопирован успешно." | |
AIOcopy_dbg2: | |
!endif | |
DetailPrint "$R2 скопирован успешно." | |
AIOcopy_end: | |
; Чистим мусор и ошибки: | |
StrCpy $R2 "" | |
StrCpy $R3 "" | |
StrCpy $R4 "" | |
StrCpy $R5 "" | |
StrCpy $0 "" | |
; | |
# Установка: $R1=тип $R2=ИмяВРеестре $R3=exe $R4=параметры $R5=ФайлДляПроверки | |
# ${AIO} 2 "Skype" "Skype.exe" '/S /I' "$OS_Drive\Program Files (x86)\Microsoft\Skype for Desktop" | |
AIO2: | |
IntCmp $R1 2 0 AIO_end AIO3 # == < > | |
ClearErrors # Чистим ошибки. | |
SetDetailsPrint listonly | |
DetailPrint "Устанавливаю $R2..." | |
; Проверяем, есть ли файл установки: | |
IfFileExists "$EXEDIR\Programs\$R3" AIOs_fileExist 0 | |
DetailPrint "Файл установки $R3 не существует!" | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 AIOs_dbg1 | |
${LogThis} "${MyDATE} Файл установки $R3 не существует!" | |
AIOs_dbg1: | |
!endif ;Abort | |
Goto AIOs_end # В конец если EXE нет. | |
AIOs_fileExist: # EXE файл существует: | |
ClearErrors | |
ExecWait '"$EXEDIR\Programs\$R3" $R4' $0 | |
DetailPrint "ExecWait: Статус установки: $0" | |
!ifdef Dabug | |
${LogThis} "ExecWait $R2: Статус установки: $0" | |
!endif | |
IntCmp $0 0 AIOs_ok AIOsetup_fe2 AIOsetup_fe2 # == < > | |
AIOsetup_fe2: | |
DetailPrint "Ошибка. Пробую ExecShellWait:" | |
ClearErrors | |
ExecShellWait "open" "$EXEDIR\Programs\$R3" "$R4" | |
IfErrors AIOs_error 0 | |
Goto AIOs_ok | |
AIOs_ok: | |
Sleep 2500 | |
ClearErrors | |
IfFileExists "$R5" 0 AIOs_error | |
WriteRegStr HKCU "Software\S60Team" $R2 "Installed" ; Пишем в Реестр и Журнал: | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 AIOs_dbg2 | |
${LogThis} "${MyDATE} $R2 успешно установлен." | |
AIOs_dbg2: | |
!endif | |
DetailPrint "$R2 успешно установлен." | |
Goto AIOs_end | |
AIOs_error: | |
DetailPrint "Установка не завершена. Ошибка!" | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 AIOs_dbg3 | |
${LogThis} "${MyDATE} $R2 установка не завершена. Ошибка!" | |
AIOs_dbg3: | |
!endif | |
AIOs_end: | |
; Чистим мусор и ошибки: | |
StrCpy $R2 "" | |
StrCpy $R3 "" | |
StrCpy $R4 "" | |
StrCpy $R5 "" | |
StrCpy $0 "" | |
ClearErrors | |
; | |
# Распаковка: $R1=тип $R2=Секция $R3=ИмяВРеестре_иЯрлыка $R4=Архив $R5=Папка\файлВPortable) | |
# ${AIO} 3 "Imagine" "Просмотр фото" "Imagine.zip" "Imagine\Imagine" | |
AIO3: | |
ClearErrors | |
IntCmp $R1 3 0 AIO_end AIO3_error # == < > | |
ClearErrors # Чистим ошибки. | |
; Проверяем присутствие архива: | |
; Если архива нет: идём к UnzNotExist и выходим из функции. | |
IfFileExists "$EXEDIR\Programs\$R4" 0 UnpackNotExist | |
DetailPrint "Unpack: Распаковываю $R2..." # Архив есть. | |
; Проверяем архив на целостность: | |
nsExec::ExecToStack '"$EXEDIR\Programs\7za.exe" t $EXEDIR\Programs\$R4 * -r' | |
Pop $1 | |
!ifdef Dabug | |
${LogThis} "$R4 Unpack: Статус проверки: $1" | |
!endif | |
IntCmp $1 0 0 UnpackCheckErr UnpackCheckErr # == < > | |
DetailPrint "Unpack: Проверка архива завершена успешно." | |
Goto Unpack_else | |
UnpackCheckErr: | |
DetailPrint "Unpack: $1, Ошибка проверки архива $R4!" | |
Goto Unpack_end # выходим из функции. | |
Unpack_else: | |
Sleep 250 | |
ClearErrors ; Теперь распаковываем архив: | |
nsExec::ExecToStack '"$EXEDIR\Programs\7za.exe" x -bb0 -aoa -bd $EXEDIR\Programs\$R4 -o$PortableDir' | |
Pop $0 | |
!ifdef Dabug | |
${LogThis} "$R4 Unpack: Статус распаковки: $0" | |
!endif | |
IntCmp $0 0 Unpack 0 0 # == < > | |
DetailPrint "Unpack: $0, Распаковка $R2 не возможна!" | |
!ifdef Dabug | |
${LogThis} "Unpack: $0, Распаковка $R2 не возможна!" | |
!endif | |
Goto Unpack_end # Если всё плохо, выходим из функции. | |
; Если всё ОК: | |
Unpack: | |
Sleep 250 | |
IfFileExists "$PortableDir\$R5.exe" 0 UnpackErr # Делаем проверку на существование файла. | |
IfFileExists "$DESKTOP\$R3.lnk" 0 UnpackNoLNK # Проверяем наличие ярлыка на Рабстоле: | |
DetailPrint "Unpack: Ярлык уже существует! Пропускаю создание..." | |
Goto Unpack_success | |
UnpackNoLNK: | |
SetDetailsPrint none | |
CreateShortcut "$DESKTOP\$R3.lnk" "$PortableDir\$R5.exe" | |
SetDetailsPrint listonly | |
Goto Unpack_success | |
Unpack_success: | |
WriteRegStr HKCU "Software\S60Team" "$R2" "Installed" | |
!ifdef Dabug | |
${LogThis} "${MyDATE} $R2 ($R3) распакован успешно." | |
!endif | |
DetailPrint "Unpack: $R2 распакован успешно." | |
Goto Unpack_end | |
UnpackErr: # Файл не существует. | |
!ifdef Dabug | |
${LogThis} "${MyDATE} $R2 ($R4): не существует. Ошибка!" | |
!endif | |
DetailPrint "Unpack: $R2 не существует. Ошибка!" | |
Goto Unpack_end | |
UnpackNotExist: # Архива нет. | |
DetailPrint "Ошибка! Архив не существует!" | |
Goto Unpack_end | |
Unpack_end: | |
; Чистим мусор и ошибки: | |
StrCpy $R2 "" | |
StrCpy $R3 "" | |
StrCpy $R4 "" | |
StrCpy $R5 "" | |
StrCpy $0 "" | |
StrCpy $1 "" | |
ClearErrors | |
Goto AIO_end | |
AIO3_error: | |
DetailPrint "Ошибка! Данные введены неправильно." | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Ошибка! Данные введены неправильно." | |
!endif | |
AIO_end: | |
; Чистим мусор и ошибки: | |
StrCpy $R1 "" | |
StrCpy $R2 "" | |
StrCpy $R3 "" | |
StrCpy $R4 "" | |
StrCpy $R5 "" | |
StrCpy $0 "" | |
StrCpy $1 "" | |
ClearErrors | |
FunctionEnd | |
; | |
; Убираем галочку, если программа уже установлена: | |
; Определение функции через макрос: | |
!define UnSelecta "!insertmacro _USelect" | |
!macro _USelect param1 param2 param3 param4 param5 | |
!insertmacro _AIOCall USelect '${param1}' '${param2}' '${param3}' '${param4}' '${param5}' | |
!macroend | |
Function USelect | |
ClearErrors | |
StrCpy $R8 "" | |
System::Call '*(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2)i.s' | |
System::Call /NOUNLOAD 'kernel32::GetLocalTime(isr0)' | |
System::Call '*$0(&i2.r1,&i2.r2,&i2,&i2.r3,&i2.r4,&i2.r5,&i2.r6,&i2.r7)' | |
System::Free $0 | |
IntFmt $1 "%0.4d" $1 # 2020 год | |
IntFmt $2 "%0.2d" $2 # 02 месяц | |
IntFmt $3 "%0.2d" $3 # 13 день | |
IntFmt $4 "%0.2d" $4 # 10 час | |
IntFmt $5 "%0.2d" $5 # 08 минута | |
IntFmt $6 "%0.2d" $6 # 31 секунда | |
IntFmt $7 "%0.2d" $7 # 300 милисекунда | |
StrCpy $R8 "$3.$2.$1 $4:$5:$6.$7" | |
StrCpy $0 "" | |
StrCpy $1 "" | |
StrCpy $2 "" | |
StrCpy $3 "" | |
StrCpy $4 "" | |
StrCpy $5 "" | |
StrCpy $6 "" | |
StrCpy $7 "" | |
ClearErrors | |
; Получить букву системного раздела текущего Windows: C: | |
StrCpy $OS_Drive $SYSDIR 2 | |
; ID | checkFile | Name | Type(1=ProgramFiles,0=else) | Registry(S60Team)Key | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 UnSelecta_time1 | |
${LogThis} "$R8$\r$\n$R2 ($R5):" | |
UnSelecta_time1: | |
!endif | |
ClearErrors | |
IfFileExists "$OS_Drive\Program Files (x86)\$R2" 0 UnSelecta_a | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 UnSelecta_ok | |
${LogThis} " + Program Files (x86): $R2 ($R5)" | |
!endif | |
Goto UnSelecta_ok # c:\Program Files (x86)\path ДА | |
UnSelecta_a: | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 UnSelecta_aa | |
${LogThis} " - Program Files (x86): $R2 ($R5)" | |
!endif | |
UnSelecta_aa: | |
IfFileExists "$OS_Drive\Program Files\$R2" 0 UnSelecta_b | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 UnSelecta_ok | |
${LogThis} " + Program Files: $R2 ($R5)" | |
!endif | |
Goto UnSelecta_ok # c:\Program Files\path ДА | |
UnSelecta_b: # Нет! | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 UnSelecta_bb | |
${LogThis} " - Program Files: $R2 ($R5)" | |
!endif | |
UnSelecta_bb: | |
IfFileExists $R2 0 UnSelecta_c # проверяем portable | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 UnSelecta_ok | |
${LogThis} " + Path: $R2 ($R5)" | |
!endif | |
Goto UnSelecta_ok # Нет файла. Читаем из реестра: | |
UnSelecta_c: | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 UnSelecta_cc | |
${LogThis} " - Path: $R2 ($R5)" | |
!endif | |
UnSelecta_cc: | |
ReadRegStr $R7 HKCU "Software\S60Team" $R5 | |
IfErrors 0 UnSelecta_reg | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 UnSelecta_err | |
${LogThis} " - Registry: $R2 ($R5)" | |
!endif | |
Goto UnSelecta_err | |
UnSelecta_reg: | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 UnSelecta_ok | |
${LogThis} " + Registry: $R2 ($R5)" | |
!endif | |
Goto UnSelecta_ok | |
; Всё ОК: | |
UnSelecta_ok: | |
!insertmacro UnselectSection $R1 | |
SectionSetText $R1 "" | |
SectionSetSize $R1 1 | |
StrCpy $R1 "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• $R3" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
Goto UnSelecta_end | |
; Всё печально... | |
UnSelecta_err: | |
!ifdef Dabug | |
${If} $Debug == 1 | |
;$\r$\n | |
${LogThis} "// - $R3 НЕ установлен!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
UnSelecta_end: | |
; Чистим мусор и ошибки: | |
StrCpy $R1 "" | |
StrCpy $R2 "" | |
StrCpy $R3 "" | |
StrCpy $R4 "" | |
StrCpy $R5 "" | |
StrCpy $R7 "" | |
StrCpy $R8 "" | |
ClearErrors | |
FunctionEnd | |
; | |
;*********************************************** | |
; Прочие функции: | |
; | |
;*********************************************** | |
; Задаём Разделы: | |
SubSection "Сеть" | |
; | |
Section /o "Basilisk" Basilisk | |
${IfNot} ${FileExists} "$PortableDir\Basilisk\Basilisk.exe" | |
${UnZIP} "Basilisk.zip" "$PortableDir" | |
SetDetailsPrint none | |
CreateShortcut "$DESKTOP\Интернет.lnk" "$PortableDir\Basilisk\portable-loader.exe" "" "$PortableDir\Basilisk\Vasya.ico" 0 | |
SetDetailsPrint listonly | |
; Пишем в Реестр и Журнал: | |
ClearErrors | |
WriteRegStr HKCU "Software\S60Team" "Basilisk" "Installed" | |
Sleep 1000 | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Basilisk распакован." | |
!endif | |
DetailPrint "Basilisk распакован." | |
${Else} | |
DetailPrint "Файл Basilisk уже существует." | |
${EndIf} | |
; | |
SectionEnd | |
; | |
Section /o "Firefox" Firefox | |
${If} $OS_Version > 3 | |
; Windows 7, 8, 8.1, 10, 11: | |
${If} $is64 == 1 | |
${AIO} 3 "Firefox" "Интернет" "FirefoxPortable.zip" "FirefoxPortable\FirefoxPortable" | |
${Else} | |
${AIO} 3 "Firefox" "Интернет" "FirefoxPortable86.zip" "FirefoxPortable\FirefoxPortable" | |
${EndIf} | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "Chrome" Chrome | |
AddSize 374190 | |
${If} $OS_Version > 3 | |
${AIO} 3 "Chrome" "Хром" "GoogleChromePortable.zip" "GoogleChromePortable\GoogleChromePortable" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "Opera" Opera | |
AddSize 284100 | |
${If} $OS_Version > 3 | |
${AIO} 3 "Opera" "Опера" "OperaPortable.zip" "OperaPortable\OperaPortable" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "uTorrent" uTorrent | |
AddSize 2121 | |
${AIO} 3 "uTorrent" "Торрент" "uTorrent.zip" "uTorrent\uTorrent" | |
SectionEnd | |
; | |
Section /o "Skype" Skype | |
${If} $is64 == 1 | |
${AIO} 2 "Skype" "Skype.exe" '/S /I' "$OS_Drive\Program Files (x86)\Microsoft\Skype for Desktop" | |
${Else} | |
${AIO} 2 "Skype" "Skype.exe" '/S /I' "$OS_Drive\Program Files (x86)\Microsoft\Skype for Desktop" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "AmmyyAdmin" AmmyyAdmin | |
AddSize 2000 | |
${AIO} 3 "AmmyyAdmin" "Помощь Вовы" "AmmyyAdmin.zip" "AmmyyAdmin\Ammyy" | |
SectionEnd | |
; | |
Section /o "AnyDesk" AnyDesk | |
AddSize 3200 | |
${AIO} 2 "Помощь Вовы" "AnyDesk.exe" '--install "$PortableDir\AnyDesk" --start-with-win --remove-first --silent --update-auto' "$PortableDir\AnyDesk\AnyDesk.exe" | |
Sleep 2000 | |
SetDetailsPrint none | |
${If} ${FileExists} "$PortableDir\AnyDesk\AnyDesk.exe" | |
CreateShortcut "$DESKTOP\Помощь Вовы.lnk" "$PortableDir\AnyDesk\AnyDesk.exe" | |
${EndIf} | |
SetDetailsPrint listonly | |
DetailPrint "Установка AnyDesk завершена." | |
SectionEnd | |
; | |
Section /o "BitSpirit" BitSpirit | |
AddSize 8000 | |
${AIO} 1 "BitSpirit Торрент" "NeNado\BitSpirit_Portable.exe" "$PortableDir\BitSpirit" "BitSpirit_Portable.exe" | |
SectionEnd | |
; | |
Section /o "Internet Download Manager" IDM | |
AddSize 18000 | |
${If} $is64 == 1 | |
${AIO} 2 "IDM" "NeNado\IDM.exe" '/S /RU' "$OS_Drive\Program Files (x86)\Internet Download Manager\IDMan.exe" | |
${Else} | |
${AIO} 2 "IDM" "NeNado\IDM.exe" '/S /RU' "$OS_Drive\Program Files\Internet Download Manager\IDMan.exe" | |
${EndIf} | |
SectionEnd | |
; | |
SubSectionEnd | |
; | |
SubSection "Медиа" | |
; | |
Section "WinCDEmu" WinCDEmu | |
AddSize 8192 | |
${AIO} 1 "WinCDEmu" "WinCDEmu-Portable.exe" "$PortableDir\WinCDEmu" "WinCDEmu-Portable.exe" | |
/* | |
${If} $is64 == 1 | |
${AIO} 2 "WinCDEmu" "WinCDEmu.exe" "" "$OS_Drive\Program Files (x86)\WinCDEmu\vmnt.exe" ;/UNATTENDED | |
${Else} | |
${AIO} 2 "WinCDEmu" "WinCDEmu.exe" "" "$OS_Drive\Program Files\WinCDEmu\vmnt.exe" | |
${EndIf} | |
*/ | |
SectionEnd | |
; | |
Section "PotPlayer" PotPlayer | |
AddSize 100000 | |
${AIO} 3 "PotPlayer" "Плеер" "PotPlayerPortable.zip" "PotPlayerPortable\PotPlayerMini" | |
Sleep 5000 | |
${If} $OS_Version < 4 | |
${UnZIP} "PotPlayerPortable_WinXP.zip" "$PortableDir\PotPlayerPortable" | |
${EndIf} | |
Sleep 2000 | |
${If} ${FileExists} "$PortableDir\PotPlayerPortable\PotPlayerMini.exe" | |
DetailPrint "PotPlayer установлен успешно!" | |
${Else} | |
DetailPrint "Ошибка установки PotPlayer!" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "Imagine" Imagine | |
AddSize 1700 | |
${AIO} 3 "Imagine" "Просмотр фото" "Imagine.zip" "Imagine\Imagine" | |
SectionEnd | |
; | |
Section /o "AnyBurn" AnyBurn | |
AddSize 5700 | |
${If} $is64 == 1 | |
${AIO} 3 "AnyBurn" "Запись дисков" "AnyBurn64.zip" "AnyBurn\AnyBurn" | |
${Else} | |
${AIO} 3 "AnyBurn" "Запись дисков" "AnyBurn.zip" "AnyBurn\AnyBurn" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "GoldWave" GoldWave | |
AddSize 22000 | |
${AIO} 3 "GoldWave" "Аудио-редактор" "NeNado\GoldWave.zip" "GoldWave\GoldWavePortable" | |
SectionEnd | |
; | |
SubSectionEnd | |
; | |
SubSection "Офис" | |
; | |
Section "AkelPad" AkelPad | |
AddSize 6000 | |
;$OS_Drive\Program Files (x86)\AkelPad\AkelPad.exe | |
;${If} ${FileExists} "$OS_Drive\Windows\notepad_AkelUndo.exe" | |
${AIO} 2 "Блокнот" "AkelPad.exe" '/S /TYPE=3' "$OS_Drive\Windows\notepad_AkelUndo.exe" | |
SectionEnd | |
; | |
Section /o "SumatraPDF" SumatraPDF | |
AddSize 5000 | |
${If} $OS_Version < 4 | |
${AIO} 1 "Просмотр PDF и DJVU" "NeNado\SumatraPDFXP.exe" "$PortableDir\SumatraPDF" "SumatraPDF.exe" | |
${Else} | |
${AIO} 1 "Просмотр PDF и DJVU" "NeNado\SumatraPDF.exe" "$PortableDir\SumatraPDF" "SumatraPDF.exe" | |
${EndIf} | |
Sleep 1000 | |
nsExec::Exec '"$PortableDir\SumatraPDF\SumatraPDF.exe" -register-for-pdf' | |
Sleep 500 | |
DetailPrint "SumatraPDF установлен успешно!" | |
SectionEnd | |
; | |
Section /o "STDUViewer" STDUViewer | |
AddSize 9890 | |
${If} $OS_Version < 4 | |
${AIO} 2 "STDUViewer" "STDUViewer86.exe" '' "$OS_Drive\Program Files\STDU Viewer\STDUViewerApp.exe" | |
${Else} | |
${If} $is64 == 1 | |
${AIO} 2 "STDUViewer" "STDUViewer.exe" '' "$OS_Drive\Program Files (x86)\STDU Viewer\STDUViewerApp.exe" | |
${Else} | |
${AIO} 2 "STDUViewer" "STDUViewer86.exe" '' "$OS_Drive\Program Files\STDU Viewer\STDUViewerApp.exe" | |
${EndIf} | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "AlReader2" AlReader2 | |
AddSize 7000 | |
${AIO} 3 "AlReader2" "Чтение книг FB2 EPUB" "NeNado\AlReader2.zip" "AlReader2\AlReader2" | |
SectionEnd | |
; | |
Section /o "Free Virtual Keyboard" FreeVK | |
;SetDetailsPrint listonly | |
DetailPrint "Копирую Free Virtual Keyboard..." | |
${If} ${FileExists} "$PortableDir\FreeVK.exe" | |
DetailPrint "Free Virtual Keyboard уже существует." | |
${Else} | |
SetDetailsPrint none | |
CopyFiles "$EXEDIR\Programs\FreeVK.exe" "$PortableDir\FreeVK.exe" | |
CopyFiles "$EXEDIR\Programs\FreeVK.ini" "$PortableDir\FreeVK.ini" | |
CreateShortcut "$DESKTOP\Экранная клавиатура.lnk" "$PortableDir\FreeVK.exe" | |
SetDetailsPrint listonly | |
; Пишем в Реестр и Журнал: | |
ClearErrors | |
WriteRegStr HKCU "Software\S60Team" "FreeVK" "Installed" | |
Sleep 1000 | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Free Virtual Keyboard скопирован успешно." | |
!endif | |
DetailPrint "Free Virtual Keyboard скопирован успешно." | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "PuntoSwitcher" PuntoSwitcher | |
AddSize 5800 | |
${AIO} 3 "PuntoSwitcher" "Авто перекл. языка" "NeNado\PuntoSwitcher.zip" "PuntoSwitcher\PuntoSwitcherPortable" | |
SectionEnd | |
; | |
; Microsoft Office: | |
Section /o "MSOffice2003" MSOffice2003 | |
AddSize 440000 ; 230 ProgramFilesFolder / 440 AEPW / 607 Max: +Outlook, Publisher | |
${AIO} 2 "MSOffice2003" "Office2003.exe" '/S /MST="Default.mst" /TAB' "" | |
; Все ярлыки будут созданы автоматически | |
${If} ${FileExists} '$OS_Drive\Program Files\Microsoft Office\Office11\WINWORD.EXE' | |
DetailPrint "Microsoft Office 2003 установлен успешно." | |
${Else} | |
DetailPrint "Ошибка установки Microsoft Office 2003!" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "MSOffice2007" MSOffice2007 | |
AddSize 1370000 ; 335 ProgramFilesFolder / 1780 Default/ 1370 AEPW | |
${AIO} 2 "MSOffice2007" "Office2007.exe" '-aiP' '$OS_Drive\Program Files\Microsoft Office\Office12\WINWORD.EXE' | |
Sleep 2000 | |
${AIO} 2 "Save_as_PDF_and_XPS" "SaveAsPDFandXPS.exe" '' '' | |
Sleep 2000 | |
${If} ${FileExists} '$OS_Drive\Program Files\Microsoft Office\Office12\WINWORD.EXE' | |
CreateShortcut "$DESKTOP\Документы.lnk" '$OS_Drive\Program Files\Microsoft Office\Office12\WINWORD.EXE' | |
CreateShortcut "$DESKTOP\Таблицы.lnk" '$OS_Drive\Program Files\Microsoft Office\Office12\EXCEL.EXE' | |
CreateShortcut "$DESKTOP\Презентаци.lnk" '$OS_Drive\Program Files\Microsoft Office\Office12\POWERPNT.EXE' | |
DetailPrint "Microsoft Office 2007 установлен успешно." | |
${Else} | |
DetailPrint "Ошибка установки Microsoft Office 2007!" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "MSOffice2010" MSOffice2010 | |
AddSize 1700000 ; 1680 AEPW, AddSize 723000 | |
${AIO} 2 "MSOffice2010" "Office2010.exe" '-aiP' '$OS_Drive\Program Files\Microsoft Office\Office14\WINWORD.EXE' | |
Sleep 2000 | |
${If} ${FileExists} '$OS_Drive\Program Files\Microsoft Office\Office14\WINWORD.EXE' | |
CreateShortcut "$DESKTOP\Документы.lnk" '$OS_Drive\Program Files\Microsoft Office\Office14\WINWORD.EXE' | |
CreateShortcut "$DESKTOP\Таблицы.lnk" '$OS_Drive\Program Files\Microsoft Office\Office14\EXCEL.EXE' | |
CreateShortcut "$DESKTOP\Презентаци.lnk" '$OS_Drive\Program Files\Microsoft Office\Office14\POWERPNT.EXE' | |
DetailPrint "Microsoft Office 2010 установлен успешно." | |
${Else} | |
DetailPrint "Ошибка установки Microsoft Office 2010!" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "MSOffice2016" MSOffice2016 | |
AddSize 1700000 ; NOT ACCURATE!!! | |
${AIO} 2 "MSOffice2016" "Office2016.exe" '-aiP' '$OS_Drive\Program Files\Microsoft Office\Office16\WINWORD.EXE' | |
Sleep 1000 | |
${If} ${FileExists} '$OS_Drive\Program Files\Microsoft Office\Office16\WINWORD.EXE' | |
CreateShortcut "$DESKTOP\Документы.lnk" '$OS_Drive\Program Files\Microsoft Office\Office16\WINWORD.EXE' | |
CreateShortcut "$DESKTOP\Таблицы.lnk" '$OS_Drive\Program Files\Microsoft Office\Office16\EXCEL.EXE' | |
CreateShortcut "$DESKTOP\Презентаци.lnk" '$OS_Drive\Program Files\Microsoft Office\Office16\POWERPNT.EXE' | |
DetailPrint "Microsoft Office 2016 установлен успешно." | |
${Else} | |
DetailPrint "Ошибка установки Microsoft Office 2016!" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "OpenOffice" OpenOffice | |
AddSize 500000 ; 137 Setup unpacked, 363 Installed | |
${If} $is64 == 1 | |
${AIO} 2 "OpenOffice" "OpenOffice.exe" '/S /qn' "$OS_Drive\Program Files (x86)\OpenOffice 4\*.*" | |
${Else} | |
${AIO} 2 "OpenOffice" "OpenOffice.exe" '/S /qn' "$OS_Drive\Program Files\OpenOffice 4\*.*" | |
${EndIf} | |
Sleep 1000 | |
RMDir /r "$TEMP\OpenOffice 4.1.11 (ru) Installation Files" | |
Sleep 1000 | |
DetailPrint "OpenOffice установлен успешно!" | |
SectionEnd | |
; | |
Section /o "WPS Office" WPSOffice | |
;wdl1.pcfg.cache.wpscdn.com/wpsdl/wpsoffice/download/200.1099 | |
; 31 Setup unpacked, 820 Installed | |
${If} ${FileExists} "$OS_Drive\Users" | |
StrCpy $UsrName "$PROFILE" "" 9 ; 2 is UserName | |
${EndIf} | |
; | |
${AIO} 2 "WPSOffice" "WPSOffice.exe" '/S /ACCEPTEULA=1' "$OS_Drive\Users\$UsrName\AppData\Local\kingsoft\WPS Office\11.2.0.10176\office6\wpsoffice.exe" | |
SectionEnd | |
; | |
SubSectionEnd | |
; | |
SubSection "Система" | |
Section "Активаторы" Act | |
AddSize 9900 | |
${If} ${FileExists} "$PortableDir\Aktivators\KMSAuto.exe" | |
; Ничего не делаем: | |
DetailPrint "Активаторы уже установлены." | |
${ElseIf} ${FileExists} "$PortableDir\Aktivators" | |
; Ничего не делаем: | |
DetailPrint "Активаторы уже установлены." | |
${Else} | |
${UnZIP} "Activators.zip" "$PortableDir\Aktivators" | |
Sleep 1000 | |
SetDetailsPrint none | |
Sleep 200 | |
${Select} $OS_Version | |
; Windows XP, XP x64 or Windows Server 2003: | |
${Case2} 1 2 | |
${If} ${FileExists} "$DESKTOP\Активация Windows.lnk" | |
; Ничего не делаем. Ярлык уже существует. | |
${Else} | |
CreateShortcut "$DESKTOP\Активация Windows.lnk" "$PortableDir\Aktivators\XP.bat" | |
CreateShortcut "$DESKTOP\Активация Office2010.lnk" "$PortableDir\Aktivators\KMSAuto.exe" | |
${EndIf} | |
; Windows 10 и 11: | |
${Case2} 7 8 | |
${If} ${FileExists} "$DESKTOP\Активация Windows.lnk" | |
; Ничего не делаем. Ярлык уже существует. | |
${Else} | |
CreateShortcut "$DESKTOP\Активация Windows.lnk" "$PortableDir\Aktivators\W10DigitalActivation.exe" | |
${EndIf} | |
; Windows 7, 8, 8.1: | |
${CaseElse} | |
${If} ${FileExists} "$DESKTOP\Активация Windows.lnk" | |
; Ничего не делаем. Ярлык уже существует. | |
${Else} | |
CreateShortcut "$DESKTOP\Активация Windows.lnk" "$PortableDir\Aktivators\KMSAuto.exe" | |
${EndIf} | |
${EndSelect} | |
; | |
${EndIf} | |
; End FileExists | |
Sleep 2000 | |
${If} ${FileExists} "$PortableDir\Aktivators\XP.bat" | |
; Пишем в Реестр: | |
ClearErrors | |
WriteRegStr HKCU "Software\S60Team" "Activators" "Installed" | |
DetailPrint "Активаторы установлены успешно!" | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Активаторы установлены успешно!" | |
!endif | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "Установить файл подкачки" PFile | |
; Задаём файл подкачки: | |
; Если 512mb ОЗУ: 1024mb | |
${If} $TotalRAM < 520 | |
ClearErrors | |
WriteRegMultiStr /REGEDIT5 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" "PagingFiles" 43,00,3a,00,5c,00,70,00,61,00,67,00,65,00,66,00,69,00,6c,\ | |
00,65,00,2e,00,73,00,79,00,73,00,20,00,31,00,30,00,32,00,34,00,20,00,31,00,\ | |
30,00,32,00,34,00,00,00,00,00 | |
DetailPrint "Файл подкачки установлен в: 1024мб." | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Файл подкачки установлен в: 1024мб." | |
!endif | |
; | |
; Если 1024mb ОЗУ: 1536mb | |
${ElseIf} $TotalRAM < 1028 | |
ClearErrors | |
WriteRegMultiStr /REGEDIT5 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" "PagingFiles" 43,00,3a,00,5c,00,70,00,61,00,67,00,65,00,66,00,69,00,6c,\ | |
00,65,00,2e,00,73,00,79,00,73,00,20,00,31,00,35,00,33,00,36,00,20,00,31,00,\ | |
35,00,33,00,36,00,00,00,00,00 | |
DetailPrint "Файл подкачки установлен в: 1536мб." | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Файл подкачки установлен в: 1536мб." | |
!endif | |
; | |
; Если 2048mb ОЗУ: 3071mb | |
${ElseIf} $TotalRAM < 2050 | |
ClearErrors | |
WriteRegMultiStr /REGEDIT5 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" "PagingFiles" 43,00,3a,00,5c,00,70,00,61,00,67,00,65,00,66,00,69,00,6c,\ | |
00,65,00,2e,00,73,00,79,00,73,00,20,00,33,00,30,00,37,00,31,00,20,00,33,00,\ | |
30,00,37,00,31,00,00,00,00,00 | |
DetailPrint "Файл подкачки установлен в: 3071мб." | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Файл подкачки установлен в: 3071мб." | |
!endif | |
; | |
; Если 4096mb ОЗУ: 6144mb | |
${ElseIf} $TotalRAM < 4096 | |
ClearErrors | |
WriteRegMultiStr /REGEDIT5 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" "PagingFiles" 43,00,3a,00,5c,00,70,00,61,00,67,00,65,00,66,00,69,00,6c,\ | |
00,65,00,2e,00,73,00,79,00,73,00,20,00,36,00,31,00,34,00,34,00,20,00,36,00,\ | |
31,00,34,00,34,00,00,00,00,00 | |
DetailPrint "Файл подкачки установлен в: 6144мб." | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Файл подкачки установлен в: 6144мб." | |
!endif | |
; | |
; Чистим если больше, чем 4Гб ОЗУ: | |
${ElseIf} $TotalRAM > 4098 | |
ClearErrors | |
WriteRegMultiStr /REGEDIT5 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" "PagingFiles" 00,00,00,00,00,00 | |
DetailPrint "Файл подкачки очищен." | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Файл подкачки очищен." | |
!endif | |
${EndIf} | |
; Пишем в Реестр | |
ClearErrors | |
WriteRegStr HKCU "Software\S60Team" "Pagefile" "Installed" | |
SectionEnd | |
; | |
Section /o "Твики реестра" RegTweaks | |
AddSize 2 | |
;SetDetailsPrint listonly | |
ClearErrors | |
ReadRegStr $TempRegKey HKCU "Software\S60Team" "Tweaks" | |
${If} ${Errors} | |
; Windows XP: | |
${If} $OS_Version < 4 | |
DetailPrint "Твики реестра для Windows XP:" | |
SetDetailsPrint none | |
ExecWait "regedit.exe /s $EXEDIR\Programs\main.reg" | |
ExecWait "regedit.exe /s $EXEDIR\Programs\tweaksXP.reg" | |
Sleep 1000 | |
; Пишем в Реестр | |
ClearErrors | |
WriteRegStr HKCU "Software\S60Team" "Tweaks" "Installed" | |
SetDetailsPrint listonly | |
; Windows 7: | |
${ElseIf} $OS_Version == 4 | |
DetailPrint "Твики реестра для Windows 7:" | |
SetDetailsPrint none | |
ExecWait "regedit.exe /s $EXEDIR\Programs\main.reg" | |
Sleep 1000 | |
; Пишем в Реестр | |
ClearErrors | |
WriteRegStr HKCU "Software\S60Team" "Tweaks" "Installed" | |
SetDetailsPrint listonly | |
; Windows 8 - 8.1 - 10: | |
${Else} | |
DetailPrint "Твики реестра для Windows 8-10:" | |
SetDetailsPrint none | |
ExecWait "regedit.exe /s $EXEDIR\Programs\main.reg" | |
ExecWait "regedit.exe /s $EXEDIR\Programs\tweaks.reg" | |
Sleep 1000 | |
; Пишем в Реестр | |
WriteRegStr HKCU "Software\S60Team" "Tweaks" "Installed" | |
SetDetailsPrint listonly | |
${EndIf} | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Твики реестра применены успешно." | |
!endif | |
DetailPrint "Твики реестра применены успешно." | |
${Else} | |
DetailPrint "Твики реестра УЖЕ применены." | |
${EndIf} | |
StrCpy $TempRegKey "" | |
SectionEnd | |
; | |
Section /o "WMP, exFAT, Installer 4.5" XPFIXEZ | |
; Windows XP: | |
${If} $OS_Version < 4 | |
AddSize 4680 | |
;SetDetailsPrint listonly | |
; | |
; Installer v4.5: | |
; HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB942288-v3@DisplayVersion = 3 | |
ClearErrors | |
ReadRegStr $TempRegKey HKLM "SOFTWARE\Microsoft\Updates\Windows XP\SP4\KB942288-v3" "DisplayVersion" | |
${If} ${Errors} | |
DetailPrint "Устанавливаю Installer v4.5..." | |
ExecShellWait "open" "$EXEDIR\Programs\XP\WindowsXP-Installerv4.5.exe" "/quiet /norestart" | |
DetailPrint "Installer v4.5 успешно установлен." | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Installer v4.5 успешно установлен." | |
!endif | |
${Else} | |
DetailPrint "Installer v4.5 Уже установлен!" | |
${EndIf} | |
Sleep 1000 | |
StrCpy $TempRegKey "" | |
Sleep 2000 | |
; | |
; ExFat: | |
; HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP4\KB955704 | |
; HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB955704@DisplayVersion = 1 | |
ClearErrors | |
ReadRegStr $TempRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB955704" "DisplayVersion" | |
${If} ${Errors} | |
DetailPrint "Устанавливаю ExFat..." | |
ExecShellWait "open" "$EXEDIR\Programs\XP\WindowsXP-KB955704-x86-RUS-ExFAT.exe" "/quiet /norestart" | |
DetailPrint "ExFat успешно установлен." | |
!ifdef Dabug | |
${LogThis} "${MyDATE} ExFat успешно установлен." | |
!endif | |
${Else} | |
DetailPrint "ExFat Уже установлен!" | |
${EndIf} | |
Sleep 1000 | |
StrCpy $TempRegKey "" | |
Sleep 2000 | |
; | |
; Windows Media Player 11: | |
; HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows Media Format Runtime\[@]DisplayName | |
; = Windows Media Format 11 runtime | |
ClearErrors | |
ReadRegStr $TempRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows Media Format Runtime" "DisplayName" | |
${If} ${Errors} | |
DetailPrint "Устанавливаю Windows Media Player 11..." | |
ExecShellWait "open" "$EXEDIR\Programs\XP\wmfdist11.exe" "/quiet /norestart" | |
DetailPrint "Windows Media Player 11 успешно установлен." | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Windows Media Player 11 успешно установлен." | |
!endif | |
${Else} | |
DetailPrint "Windows Media Player 11 Уже установлен!" | |
${EndIf} | |
Sleep 1000 | |
StrCpy $TempRegKey "" | |
Sleep 2000 | |
; | |
; Пишем в Реестр и Журнал: | |
ClearErrors | |
WriteRegStr HKCU "Software\S60Team" "WMP_exFAT_Installer" "Installed" | |
Sleep 1000 | |
;${LogThis} "${MyDATE} WMP_exFAT_Installer установлен." | |
ClearErrors | |
DetailPrint "WMP_exFAT_Installer установлен." | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "HOSTS файл" HOSTS | |
AddSize 3 | |
SetDetailsPrint none | |
CopyFiles "$EXEDIR\Programs\hosts.txt" "$OS_Drive\Windows\System32\Drivers\etc\hosts" | |
SetDetailsPrint listonly | |
; Пишем в Реестр и Журнал: | |
ClearErrors | |
WriteRegStr HKCU "Software\S60Team" "HOSTS" "Installed" | |
!ifdef Dabug | |
${LogThis} "${MyDATE} HOSTS файл скопирован." ;$\r$\n | |
!endif | |
SectionEnd | |
; | |
Section /o "StartIsBack" SIB | |
${If} $is64 == 1 | |
${AIO} 2 "StartIsBack" "StartBack AiO 1.0.48.3.exe" '' '$OS_Drive\Program Files (x86)\StartIsBack\StartIsBack32.dll' | |
${Else} | |
${AIO} 2 "StartIsBack" "StartBack AiO 1.0.48.3.exe" '' '$OS_Drive\Program Files\StartIsBack\StartIsBack32.dll' | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "OpenShell" OpenShell | |
${AIO} 2 "OpenShell" "OpenShell.exe" '' "$OS_Drive\Program Files\Open-Shell\StartMenu.exe" | |
SectionEnd | |
; | |
Section "Visual C++ Redist" VCR | |
AddSize 251000 | |
${AIO} 2 "VisualC AIO" "VisualCppRedist_AIO_x86_x64.exe" '/ai' "$OS_Drive\Windows\System32\msvcp100.dll" | |
SectionEnd | |
; | |
Section "DirectX" DirectX | |
;"DX90c_Addon_Installer.exe" '/SILENT' | |
${If} $is64 == 1 | |
${AIO} 2 "DirectX" "DirectX 9.0c.exe" '/S' "$OS_Drive\Windows\System32\d3dx11_43.dll" | |
${Else} | |
${AIO} 2 "DirectX" "DirectX 9.0c.exe" '/S' "$OS_Drive\Windows\System32\d3dx11_43.dll" | |
${EndIf} | |
SectionEnd | |
; | |
; nVidia PhysX: (репак, ставит и легаси) | |
;C:\Program Files\NVIDIA Corporation\PhysX\Engine\v2.8.3\PhysXCore.dll New, was /s | |
Section /o "PhysX" PhysX | |
AddSize 292000 | |
${If} $is64 == 1 | |
${AIO} 2 "PhysX" "PhysX 9.21.0713.exe" "/S" '$OS_Drive\Program Files (x86)\NVIDIA Corporation\PhysX\Engine\v2.8.3\PhysXCore.dll' | |
${Else} | |
${AIO} 2 "PhysX" "PhysX 9.21.0713.exe" "/S" '$OS_Drive\Program Files\NVIDIA Corporation\PhysX\Engine\v2.8.3\PhysXCore.dll' | |
${EndIf} | |
SectionEnd | |
; | |
Section /o ".NET Framework 1, 2, 3.5, 4" NET4 | |
AddSize 878000 ; 416mb 1-2-3.5, 462mb 4.0 | |
${AIO} 2 ".NET4" "NET_AIO_XP.exe" '/ai /gm2' "$OS_Drive\Windows\Microsoft.NET\Framework\" | |
SectionEnd | |
; | |
Section /o ".NET Framework v4.72" NET47 ; 1.76Gb Unpacked | |
AddSize 1761000 | |
${If} $OS_Version < 3 | |
MessageBox MB_ICONEXCLAMATION 'Windows XP not Supported (Не поддерживается)!' | |
${Else} | |
${If} $is64 == 1 | |
${AIO} 2 ".NET47" "NET_4.72.exe" '/ai' "$OS_Drive\Program Files (x86)\Microsoft.NET\RedistList\AssemblyList_4_client.xml" | |
${Else} | |
${AIO} 2 ".NET47" "NET_4.72.exe" '/ai' "$OS_Drive\Program Files\Microsoft.NET\RedistList\AssemblyList_4_client.xml" | |
${EndIf} | |
${EndIf} | |
SectionEnd | |
; | |
Section /o ".NET Framework v4.8" NET48 ; 2.37Gb Unpacked | |
;AddSize 2376000 | |
AddSize 2764000 | |
${If} $OS_Version < 4 | |
MessageBox MB_ICONEXCLAMATION 'Not Supported (Не поддерживается)!' | |
${Else} | |
${If} $is64 == 1 | |
${AIO} 2 ".NET48" "NET4.8.exe" '/ais' "$OS_Drive\Program Files (x86)\Microsoft.NET\RedistList\AssemblyList_4_client.xml" | |
${Else} | |
${AIO} 2 ".NET48" "NET4.8.exe" '/ais' "$OS_Drive\Program Files\Microsoft.NET\RedistList\AssemblyList_4_client.xml" | |
${EndIf} | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "XNAFramework" XNAFramework | |
AddSize 9000 | |
;C:\Windows\Microsoft.NET\assembly\GAC_32\Microsoft.Xna.Framework\v4.0_4.0.0.0__842cf8be1de50553\Microsoft.Xna.Framework.dll | |
${If} $is64 == 1 | |
${AIO} 2 "XNAFramework" "xna4.msi" '/qn' "$OS_Drive\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\Redist\DX Redist\DXSETUP.exe" | |
${Else} | |
${AIO} 2 "XNAFramework" "xna4.msi" '/qn' "$OS_Drive\Program Files\Microsoft XNA\XNA Game Studio\v4.0\Redist\DX Redist\DXSETUP.exe" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "OpenAL" OpenAL | |
AddSize 1000 | |
${If} $is64 == 1 ; x64 | |
${AIO} 2 "OpenAL" "oalinst.exe" '/SILENT' "$OS_Drive\Program Files (x86)\OpenAL\oalinst.exe" | |
${Else} | |
${AIO} 2 "OpenAL" "oalinst.exe" '/SILENT' "$OS_Drive\Program Files\OpenAL\oalinst.exe" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "Java JRE" JRE | |
${If} $OS_Version < 4 ; XP | |
${If} $is64 == 1 ; x64 | |
${AIO} 2 "Java JRE" "JavaX64.exe" '/s' "$OS_Drive\Program Files\Java\jre1.8.0_45\bin\javaw.exe" | |
${Else} | |
${AIO} 2 "Java JRE" "JavaXP.exe" '/s' "$OS_Drive\Program Files\Java\jre1.8.0_45\bin\javaw.exe" | |
${EndIf} | |
${Else} | |
${If} $is64 == 1 ; x64 | |
${AIO} 2 "Java JRE" "Java64.exe" '/s' "$OS_Drive\Program Files\Java\jre1.8.0_311\bin\javaw.exe" | |
${Else} | |
${AIO} 2 "Java JRE" "Java.exe" '/s' "$OS_Drive\Program Files\Java\jre1.8.0_311\bin\javaw.exe" | |
${EndIf} | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "WiseDiskCleaner" WiseDiskCleaner | |
AddSize 10465 | |
${AIO} 3 "WiseDiskCleaner" "Очистка диска" "WiseDiskCleaner.zip" "WiseDiskCleaner\WiseDiskCleaner" | |
SectionEnd | |
; | |
Section /o "WiseRegCleaner" WiseRegCleaner | |
AddSize 8404 | |
${AIO} 3 "WiseRegCleaner" "Очистка реестра" "WiseRegCleaner.zip" "WiseRegCleaner\WiseRegCleaner" | |
SectionEnd | |
; | |
Section /o "7zip" 7zip | |
${If} $is64 == 1 | |
${AIO} 2 "7zip" "7z64.exe" '/S' "$OS_Drive\Program Files\7-Zip\7zFM.exe" | |
${Else} | |
${AIO} 2 "7zip" "7z.exe" '/S' "$OS_Drive\Program Files\7-Zip\7zFM.exe" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "WinRAR" WinRAR | |
AddSize 19000 | |
${If} $OS_Version < 3 | |
${AIO} 2 "WinRAR" "WinRAR6" '' "$OS_Drive\Program Files\WinRAR\WinRAR.exe" | |
${Else} | |
${AIO} 2 "WinRAR" "WinRAR6x" '' "$OS_Drive\Program Files\WinRAR\WinRAR.exe" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "TotalCommander" TotalCommander | |
AddSize 22200 | |
${AIO} 2 "TotalCommander" "tcmd1000x32_64" '/A1H1G1D1U1K1L4' "$OS_Drive\totalcmd\TOTALCMD.EXE" | |
Sleep 1000 | |
; Скрываем копирование настроек и клюююча регистрации: | |
SetDetailsPrint none | |
${If} $OS_Version < 3 | |
CopyFiles "$EXEDIR\Programs\wincmd.ini" "$PROFILE\Application Data\GHISLER\wincmd.ini" | |
${Else} | |
CopyFiles "$EXEDIR\Programs\wincmd.ini" "$PROFILE\AppData\Local\GHISLER\wincmd.ini" | |
${EndIf} | |
CopyFiles "$EXEDIR\Programs\wincmd.ini" "C:\totalcmd\wincmd.ini" | |
CopyFiles "$EXEDIR\Programs\wincmd10.key" "C:\totalcmd\wincmd.key" | |
; Показываем отчёт: | |
SetDetailsPrint listonly | |
DetailPrint "Ключ и настройки успешно скопированы" | |
WriteRegStr HKCU "Software\S60Team" "TotalCommander" "Installed" | |
; | |
SectionEnd | |
; | |
Section /o "Win10Tweaker" Win10Tweaker | |
${AIO} 1 "Win10Tweaker" "Win10Tweaker.exe" "$PortableDir\Win10Tweaker" "Win10Tweaker.exe" | |
SectionEnd | |
; | |
Section /o "TinyWall" TinyWall | |
AddSize 1600 | |
DetailPrint "Устанавливаю TinyWall:" | |
${If} ${FileExists} "$OS_Drive\Program Files (x86)\TinyWall" | |
DetailPrint "Ошибка! TinyWall уже установлен!" | |
${ElseIf} ${FileExists} "$OS_Drive\Program Files\TinyWall" | |
DetailPrint "Ошибка! TinyWall уже установлен!" | |
${Else} | |
; Если семёрка: | |
${If} $OS_Version == 4 | |
ExecShellWait "open" "$EXEDIR\Programs\TinyWall3.msi" | |
; Если 8 или выше: | |
${ElseIf} $OS_Version > 4 | |
ExecShellWait "open" "$EXEDIR\Programs\TinyWall.msi" | |
${EndIf} | |
; Перепроверяем: | |
Sleep 2000 | |
${If} $is64 == 1 ; x64 | |
${If} ${FileExists} "$OS_Drive\Program Files (x86)\TinyWall" | |
ClearErrors | |
WriteRegStr HKCU "Software\S60Team" "TinyWall" "Installed" | |
Sleep 1000 | |
!ifdef Dabug | |
${LogThis} "${MyDATE} TinyWall успешно установлен." | |
!endif | |
DetailPrint "TinyWall успешно установлен." | |
${Else} | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Ошибка установки TinyWall." | |
!endif | |
DetailPrint "Ошибка установки TinyWall." | |
${EndIf} | |
${Else} | |
${If} ${FileExists} "$OS_Drive\Program Files\TinyWall" | |
ClearErrors | |
WriteRegStr HKCU "Software\S60Team" "TinyWall" "Installed" | |
Sleep 1000 | |
!ifdef Dabug | |
${LogThis} "${MyDATE} TinyWall успешно установлен." | |
!endif | |
DetailPrint "TinyWall успешно установлен." | |
${Else} | |
!ifdef Dabug | |
${LogThis} "${MyDATE} Ошибка установки TinyWall." | |
!endif | |
DetailPrint "Ошибка установки TinyWall." | |
${EndIf} | |
${EndIf} | |
; Конец перепроверки. | |
${EndIf} | |
; Конец проверки установки. | |
SectionEnd | |
; | |
Section /o "HWInfo" HWInfo | |
AddSize 8300 | |
${If} $is64 == 1 | |
${AIO} 3 "HWInfo" "О вашем компьютере" "NeNado\HWInfo.zip" "HWInfo\HWiNFO64" | |
${Else} | |
${AIO} 3 "HWInfo" "О вашем компьютере" "NeNado\HWInfo.zip" "HWInfo\HWiNFO32" | |
${EndIf} | |
SectionEnd | |
; | |
SubSectionEnd | |
; | |
SubSection "Прочее" | |
; | |
Section /o "AVG Antivirus Free" AVG | |
AddSize 736000 | |
${If} $OS_Version < 3 | |
${AIO} 2 "AVGFree_XP" "AV\AVG.exe" '' "" | |
${Else} | |
${AIO} 2 "AVGFree" "AV\AVG_XP.exe" '' "" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "Comodo Internet Security" Comodo | |
AddSize 700000 | |
${If} $OS_Version < 3 | |
${AIO} 2 "ComodoInternetSecurityXP" "AV\Comodo_IS_XP.exe" '' "" | |
${Else} | |
${AIO} 2 "ComodoInternetSecurity" "AV\Comodo_IS.exe" '' "" | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "Squid" Squid | |
${If} ${FileExists} "$OS_Drive\squid\sbin\squid.exe" | |
DetailPrint "Squid уже установлен." | |
${ElseIf} ${FileExists} "$OS_Drive\squid" | |
DetailPrint "Squid уже установлен." | |
${Else} | |
${AIO} 2 "Squid" "Proxy\Squid.exe" '' "$OS_Drive\squid\sbin\squid.exe" | |
DetailPrint "Деинсталлятор создан в папке $OS_Drive\squid" | |
DetailPrint "Squid добавлен в автозагрузку." | |
${EndIf} | |
SectionEnd | |
; | |
Section /o "TrueTransparency" TT | |
${If} $OS_Version < 3 | |
AddSize 1184 | |
${AIO} 3 "TrueTransparency" "TrueTransparency" "XP\TrueTransparency.zip" "TrueTransparency\TrueTransparency" | |
${EndIf} | |
SectionEnd | |
; | |
SubSectionEnd | |
; | |
;*********************************************************************** | |
; Запуск штучек при Запуске установщика: Отладка и Определение ОС. | |
Function .onInit | |
;*********************************************** | |
; Проверяем права пользователя: | |
System::Call "kernel32::GetModuleHandle(t 'shell32.dll') i .s" | |
System::Call "kernel32::GetProcAddress(i s, i 680) i .r0" | |
System::Call "::$0() i .r0" | |
IntCmp $0 1 +3 | |
MessageBox MB_OK "Требуются права администратора для запуска этой установки!" | |
Quit | |
; | |
;*********************************************** | |
; Предотвращение множественности запуска: | |
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "$(^Name)") i .r1 ?e' | |
Pop $R0 | |
${IfNot} $R0 == 0 | |
MessageBox MB_OK|MB_ICONEXCLAMATION "Одна копия $(^Name) уже выполняется." | |
Quit | |
${EndIf} | |
StrCpy $R0 "" | |
; | |
;*********************************************** | |
; Получаем параметры: /d1 | |
!ifdef Dabug | |
!ifdef OldLook | |
System::Call "Kernel32::GetCommandLine()t.r0" | |
StrCpy $1 $0 "" -3 | |
StrCmp $1 "/d1" 0 Cmd_next | |
StrCpy $Debug 1 | |
Goto Cmd_dend | |
Cmd_next: | |
ClearErrors # no /d1: | |
ReadRegStr $R7 HKCU "Software\S60Team" "DirectX" | |
StrCmp $R7 "Installed" 0 Cmd_debug #if installed | |
Goto Cmd_dend # no debug, go to Cmd_dend. | |
Cmd_debug: | |
StrCpy $Debug 1 | |
Cmd_dend: | |
StrCpy $R7 "" | |
StrCpy $0 "" | |
StrCpy $1 "" | |
; | |
!else | |
${GetParameters} $R6 | |
${GetOptions} "$R6" "/d" $R6 | |
${If} $R6 == "1" | |
StrCpy $Debug 1 | |
${EndIf} | |
StrCpy $R6 "" | |
!endif | |
!endif | |
; | |
;*********************************************** | |
; Получаем количество установленной ОЗУ: | |
System::Alloc 64 | |
Pop $1 | |
System::Call "*$1(i64)" | |
System::Call "Kernel32::GlobalMemoryStatusEx(i r1)" | |
System::Call "*$1(i, i, l.r2, l, l, l, l, l, l)" | |
System::Free $1 | |
; Преобразовываем в мегабайты: | |
System::Int64Op $2 / 1048576 | |
Pop $2 ; Получить кол-во ОЗУ в мегабайтах из стэка. | |
Push $2 ; Записать в стэк кол-во ОЗУ. | |
Pop $TotalRAM ; Взять из стэка кол-во ОЗУ и записать сюда. | |
StrCpy $1 "" | |
StrCpy $2 "" | |
; | |
;*********************************************** | |
; Получить букву системного раздела текущего Windows: C: | |
StrCpy $OS_Drive $SYSDIR 2 | |
; | |
;*********************************************** | |
; Определяем, где создавать папку Portable (v6): | |
StrCpy $0 "" | |
System::Call "kernel32::GetDriveTypeW(t 'D:\') i .s" | |
Pop $0 ; Возвращает тип раздела (из стэка в $0) | |
; D это HDD: | |
${If} $0 == 3 | |
; Определяем, сколько свободного места места на D: | |
${DriveSpace} "D:\" "/D=F /S=G" $R1 | |
${If} $R1 > 2 | |
StrCpy $PortableDir "D:\Portable" | |
${Else} | |
StrCpy $PortableDir "$OS_Drive\Portable" | |
${EndIf} | |
${Else} | |
StrCpy $PortableDir "$OS_Drive\Portable" | |
${EndIf} | |
; Определяем, сколько свободного места места: | |
StrCpy $R0 $PortableDir 2 | |
${DriveSpace} $R0 "/D=F /S=G" $FreeSpaceInPD | |
${If} $FreeSpaceInPD < 2 | |
; Если места меньше чем 2Гб, завершаем установку: | |
MessageBox MB_ICONEXCLAMATION "Ошибка! Освободите минимум 2гб!" | |
Quit | |
${EndIf} | |
StrCpy $0 "" | |
StrCpy $R0 "" | |
StrCpy $R1 "" | |
ClearErrors | |
; | |
;*********************************************** | |
/* | |
ClearErrors | |
StrCpy $Time "" | |
System::Call '*(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2)i.s' | |
System::Call /NOUNLOAD 'kernel32::GetLocalTime(isr0)' | |
System::Call '*$0(&i2.r1,&i2.r2,&i2,&i2.r3,&i2.r4,&i2.r5,&i2.r6,&i2.r7)' | |
System::Free $0 | |
IntFmt $1 "%0.4d" $1 # 2020 year | |
IntFmt $2 "%0.2d" $2 # 02 month | |
IntFmt $3 "%0.2d" $3 # 13 day | |
IntFmt $4 "%0.2d" $4 # 10 hours | |
IntFmt $5 "%0.2d" $5 # 08 minutes | |
IntFmt $6 "%0.2d" $6 # 31 second | |
IntFmt $7 "%0.2d" $7 # 300 msecond | |
StrCpy $Time "$3.$2.$1 $4:$5:$6.$7" | |
StrCpy $0 "" | |
StrCpy $1 "" | |
StrCpy $2 "" | |
StrCpy $3 "" | |
StrCpy $4 "" | |
StrCpy $5 "" | |
StrCpy $6 "" | |
StrCpy $7 "" | |
ClearErrors | |
*/ | |
; | |
;*********************************************** | |
; Отладка: | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "//----------------------------------------------------------------" | |
${LogThis} "${MyDATE}" | |
${LogThis} "Программа установки запущена." | |
ClearErrors | |
; Получаем информацию о ПК: | |
nsExec::ExecToStack '"$EXEDIR\PCs\AboutThisPC_byS60Team.exe"' | |
Pop $0 | |
${If} $0 == "error" | |
${LogThis} " Ошибка! Информация о компьютере не получена." | |
${Else} | |
${LogThis} " Информация о компьютере получена успешно." | |
${EndIf} | |
ClearErrors | |
${LogThis} "//--------------------------------" | |
StrCpy $0 "" | |
${EndIf} | |
!endif | |
; | |
;*********************************************** | |
; Определение ОС: ($OSvText == "XP x64 or Server 2003") | |
; Windows 10 RTM: 6.2.10240.16384 | 10.0.10240.16384 | GetDllVersion: 6.3.10240.16384 | |
!ifdef OldLook | |
ClearErrors | |
ReadRegStr $OSreg1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentVersion" | |
IfErrors 0 OSve | |
MessageBox MB_OK "Критическая ошибка: $OSreg1. ОС не может быть определена!" | |
Quit | |
OSve: | |
; No errors | |
StrCmp $OSreg1 "5.1" 0 +4 | |
StrCpy $OS_Version 1 | |
StrCpy $OSvText "XP" | |
Goto Win_End | |
StrCmp $OSreg1 "5.2" 0 +4 | |
StrCpy $OS_Version 2 | |
StrCpy $OSvText "XP x64 or Server 2003" | |
Goto Win_End | |
StrCmp $OSreg1 "6.0" 0 +4 | |
StrCpy $OS_Version 3 | |
StrCpy $OSvText "Vista or Server 2008" | |
Goto Win_End | |
StrCmp $OSreg1 "6.1" 0 +4 | |
StrCpy $OS_Version 4 | |
StrCpy $OSvText "7 or Server 2008 R2" | |
Goto Win_End | |
StrCmp $OSreg1 "6.2" 0 +4 | |
StrCpy $OS_Version 5 | |
StrCpy $OSvText "Windows 8 or Server 2012" | |
Goto Win_End | |
StrCmp $OSreg1 "6.4" 0 +4 | |
StrCpy $OS_Version 7 | |
StrCpy $OSvText "Windows 10 RC or Server 2016 RC" | |
Goto Win_End | |
StrCmp $OSreg1 "6.3" 0 Win_End | |
ClearErrors | |
ReadRegDWORD $OSreg2 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentMajorVersionNumber" | |
IfErrors 0 Win_X | |
StrCpy $OS_Version 6 | |
StrCpy $OSvText "8.1 or Server 2012 R2" | |
Goto Win_End | |
Win_X: | |
ClearErrors | |
GetDLLVersion "$OS_Drive\Windows\System32\ntkrla57.exe" $R0 $R1 | |
IfErrors 0 Win_11 | |
StrCpy $OS_Version 7 | |
StrCpy $OSvText "10 or Server 2016 - 2019" | |
Goto Win_End | |
Win_11: | |
StrCpy $OS_Version 8 | |
StrCpy $OSvText "11 or Server 2022" | |
Win_End: | |
; Чистим мусор: | |
StrCpy $R0 "" | |
StrCpy $R1 "" | |
StrCpy $OSreg1 "" | |
StrCpy $OSreg2 "" | |
StrCpy $OSreg3 "" | |
StrCpy $TempRegKey "" | |
ClearErrors | |
!else | |
; MUI2: | |
ClearErrors | |
ReadRegStr $OSreg1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentVersion" | |
${If} ${Errors} | |
${LogThis} "Критическая ошибка: $OSreg1. ОС не может быть определена!" | |
MessageBox MB_OK "Критическая ошибка: $OSreg1. ОС не может быть определена!" | |
Quit | |
${Else} | |
; No errors | |
${Select} $OSreg1 | |
; Windows XP x86: | |
${Case} "5.1" | |
StrCpy $OS_Version 1 | |
StrCpy $OSvText "XP" | |
; Windows XP x64 or Server 2003: | |
${Case} "5.2" | |
StrCpy $OS_Version 2 | |
StrCpy $OSvText "XP x64 or Server 2003" | |
; Windows Vista or Server 2008: | |
${Case} "6.0" | |
StrCpy $OS_Version 3 | |
StrCpy $OSvText "Vista or Server 2008" | |
; Windows 7 or Server 2008 R2: | |
${Case} "6.1" | |
StrCpy $OS_Version 4 | |
StrCpy $OSvText "7 or Server 2008 R2" | |
; Windows 8 or Server 2012: | |
${Case} "6.2" | |
StrCpy $OS_Version 5 | |
StrCpy $OSvText "Windows 8 or Server 2012" | |
; Windows 8.1 or Server 2012 R2: | |
${Case} "6.3" | |
ClearErrors | |
ReadRegDWORD $OSreg2 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentMajorVersionNumber" | |
; Если записи в реестре нет, то это 8.1: | |
${If} ${Errors} | |
StrCpy $OS_Version 6 | |
StrCpy $OSvText "8.1 or Server 2012 R2" | |
StrCpy $OSreg2 "" | |
; Если есть (10), то это 10 или 11: | |
${Else} | |
ReadRegDWORD $OSreg3 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentBuild" | |
; v4: | |
ClearErrors | |
GetDLLVersion "$OS_Drive\Windows\System32\ntkrla57.exe" $R0 $R1 | |
${If} ${Errors} | |
StrCpy $OS_Version 7 | |
StrCpy $OSvText "10 or Server 2016 - 2019" | |
${Else} | |
StrCpy $OS_Version 8 | |
StrCpy $OSvText "11 or Server 2022" | |
${EndIf} | |
; Чистим мусор: | |
StrCpy $R0 "" | |
StrCpy $R1 "" | |
ClearErrors | |
${EndIf} ;Конец проверки 10ки с помощью ключа реестра "10". | |
; Windows 10 technical preview: | |
${Case} "6.4" | |
StrCpy $OS_Version 7 | |
StrCpy $OSvText "Windows 10 RC or Server 2016 RC" | |
${CaseElse} | |
StrCpy $OS_Version 99 | |
StrCpy $OSvText "Версия сборки ОС: OSreg1" | |
${LogThis} "Версия сборки ОС: OSreg1" | |
${EndSelect} | |
${EndIf} | |
!endif | |
; | |
;*********************************************** | |
; Определение разрядности ОС (v5): | |
System::Call kernel32::GetCurrentProcess()i.s | |
IntCmp $OS_Version 7 0 x64_err x64_err | |
System::Call kernel32::IsWow64Process(is,*i.s) | |
Goto x64_else | |
x64_err: | |
System::Call kernel32::IsWow64Process2(is,*i.s,*i) ; [Win10.1511+] 0 if not WOW64 | |
x64_else: | |
Pop $is64 ; 0 = 32-bit ОС, 1 = 64-bit ОС | |
StrCmp $is64 "1" 0 +3 | |
StrCpy $OSbit "x64" | |
Goto +2 | |
StrCpy $OSbit "x86" | |
;*********************************************** | |
; | |
!ifdef Dabug | |
${If} $Debug == 1 | |
!ifdef OldLook | |
IntCmp $OS_Version 1 0 OSv_err1 OSv_err1 | |
${LogThis} "ОС: Windows XP" | |
Goto OSv_end | |
OSv_err1: | |
IntCmp $OS_Version 2 0 OSv_err2 OSv_err2 | |
${LogThis} "ОС: Windows XP x64 or Windows Server 2003" | |
Goto OSv_end | |
OSv_err2: | |
IntCmp $OS_Version 3 0 OSv_err3 OSv_err3 | |
${LogThis} "ОС: Windows Vista or Windows Server 2008" | |
Goto OSv_end | |
OSv_err3: | |
IntCmp $OS_Version 4 0 OSv_err4 OSv_err4 | |
${LogThis} "ОС: Windows 7 or Windows Server 2008 R2" | |
Goto OSv_end | |
OSv_err4: | |
IntCmp $OS_Version 5 0 OSv_err5 OSv_err5 | |
${LogThis} "ОС: Windows 8 or Server 2012" | |
Goto OSv_end | |
OSv_err5: | |
IntCmp $OS_Version 6 0 OSv_err6 OSv_err6 | |
${LogThis} "ОС: Windows 8.1 or Server 2012 R2" | |
Goto OSv_end | |
OSv_err6: | |
IntCmp $OS_Version 7 0 OSv_err7 OSv_err7 | |
${LogThis} "ОС: Windows 10 or Server 2016 - 2019" | |
Goto OSv_end | |
OSv_err7: | |
IntCmp $OS_Version 8 0 OSv_end OSv_end | |
${LogThis} "ОС: Windows 11 or Server 2021" | |
Goto OSv_end | |
OSv_end: | |
; | |
!else | |
${Select} $OS_Version | |
${Case} 1 | |
${LogThis} "ОС: Windows XP" | |
${Case} 2 | |
${LogThis} "ОС: Windows XP x64 or Windows Server 2003" | |
${Case} 3 | |
${LogThis} "ОС: Windows Vista or Windows Server 2008" | |
${Case} 4 | |
${LogThis} "ОС: Windows 7 or Windows Server 2008 R2" | |
${Case} 5 | |
${LogThis} "ОС: Windows 8 or Server 2012" | |
${Case} 6 | |
${LogThis} "ОС: Windows 8.1 or Server 2012 R2" | |
${Case} 7 | |
${LogThis} "ОС: Windows 10 or Server 2016 - 2019" | |
${Case} 8 | |
${LogThis} "ОС: Windows 11 or Server 2021" | |
${CaseElse} | |
${LogThis} "Версия сборки ОС: $OSreg1" | |
${EndSelect} | |
!endif | |
; | |
${If} $is64 == 1 | |
${LogThis} "Битность Windows: x64" | |
${Else} | |
${LogThis} "Битность Windows: x86" | |
${EndIf} | |
${LogThis} "Program Files (x86): $PROGRAMFILES32" | |
${LogThis} "Program Files (x64): $PROGRAMFILES64" | |
${LogThis} "Program Files: $PROGRAMFILES" | |
${LogThis} "Каталог пользователя: $PROFILE" | |
${LogThis} "Каталог Windows: $WINDIR" | |
${LogThis} "Каталог системы: $SYSDIR" | |
${LogThis} "Каталог Temp: $TEMP" | |
${EndIf} | |
!endif | |
; Чистим мусор: | |
StrCpy $OSreg1 "" | |
StrCpy $OSreg2 "" | |
StrCpy $OSreg3 "" | |
StrCpy $TempRegKey "" | |
; | |
;*********************************************** | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "Папка Portable: $PortableDir" | |
${LogThis} "В папке Portable доступно: $FreeSpaceInPDГб" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
; | |
;*********************************************** | |
; Если программа уже есть на диске или установлена, снимаем галочку: | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} " Установленные программы:" | |
${EndIf} | |
!endif | |
; | |
;*********************************************** | |
; Получаем версии .NET Framework: | |
; v3.5 | |
${If} ${FileExists} `$OS_Drive\WINDOWS\Microsoft.NET\Framework\v3.5\*.*` | |
StrCpy $NETv_text "3.5, " | |
${ElseIf} ${FileExists} `$OS_Drive\WINDOWS\Microsoft.NET\Framework\v3.5` | |
StrCpy $NETv_text "" | |
${Else} | |
; Файл не существует | |
${EndIf} | |
; | |
; v4 | |
${If} ${FileExists} `$OS_Drive\WINDOWS\Microsoft.NET\Framework\v4.0.30319\*.*` | |
StrCpy $NETv_text "$NETv_text4.0.30319" | |
${ElseIf} ${FileExists} `$OS_Drive\WINDOWS\Microsoft.NET\Framework\v4.0.30319` | |
StrCpy $NETv_text "" | |
${Else} | |
; Файл не существует | |
${EndIf} | |
; | |
; v4.62: | |
ClearErrors | |
ReadRegDWORD $TempRegKey HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" Release | |
${If} $OS_Version > 6 | |
${If} $TempRegKey == 394802 | |
StrCpy $NETv_text "$NETv_text, 4.62, " | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 NET462_debug | |
${LogThis} "• .Net Framework v4.62 установлен." | |
NET462_debug: | |
!endif | |
${EndIf} | |
${Else} | |
${If} $TempRegKey == 394806 | |
StrCpy $NETv_text "$NETv_text, 4.62, " | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 NET462_debug2 | |
${LogThis} "• .Net Framework v4.62 установлен." | |
NET462_debug2: | |
!endif | |
${Else} | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 NET462_debug3 | |
${LogThis} "- .Net Framework v4.62 НЕ установлен!" | |
NET462_debug3: | |
!endif | |
${EndIf} | |
${EndIf} | |
; v4.7: | |
ClearErrors | |
ReadRegDWORD $TempRegKey HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" Release | |
${If} $OS_Version > 6 | |
${If} $TempRegKey == 460798 | |
StrCpy $NETv_text "$NETv_text, 4.7, " | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 NET47_debug | |
${LogThis} "• .Net Framework v4.7 установлен." | |
NET47_debug: | |
!endif | |
${EndIf} | |
${Else} | |
${If} $TempRegKey == 460805 | |
StrCpy $NETv_text "$NETv_text, 4.7, " | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 NET47_debug2 | |
${LogThis} "• .Net Framework v4.7 установлен." | |
NET47_debug2: | |
!endif | |
${Else} | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 NET47_debug3 | |
${LogThis} "- .Net Framework v4.7 НЕ установлен!" | |
NET47_debug3: | |
!endif | |
${EndIf} | |
${EndIf} | |
; v4.71: | |
ClearErrors | |
ReadRegDWORD $TempRegKey HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" Release | |
${If} $OS_Version > 6 | |
${If} $TempRegKey == 461308 | |
StrCpy $NETv_text "$NETv_text, 4.71, " | |
${EndIf} | |
${Else} | |
${If} $TempRegKey == 461310 | |
StrCpy $NETv_text "$NETv_text, 4.71, " | |
${EndIf} | |
${EndIf} | |
; v4.72: | |
ClearErrors | |
ReadRegDWORD $TempRegKey HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" Release | |
${If} $OS_Version > 6 | |
${If} $TempRegKey == 461808 | |
StrCpy $NETv_text "$NETv_text, 4.72, " | |
${EndIf} | |
${Else} | |
${If} $TempRegKey == 461814 | |
StrCpy $NETv_text "$NETv_text, 4.72, " | |
${EndIf} | |
${EndIf} | |
; v4.8: | |
ClearErrors | |
ReadRegDWORD $TempRegKey HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" Release | |
${If} $OS_Version > 6 | |
${If} $TempRegKey == 528040 | |
StrCpy $NETv_text "$NETv_text, 4.8, " | |
${EndIf} | |
${Else} | |
${If} $TempRegKey == 528049 | |
StrCpy $NETv_text "$NETv_text, 4.8, " | |
${EndIf} | |
${EndIf} | |
${If} $OS_Version > 7 | |
${If} $TempRegKey == 528449 | |
StrCpy $NETv_text "$NETv_text, 4.8, " | |
${EndIf} | |
${EndIf} | |
; Чистим мусор и ошибки: | |
StrCpy $TempRegKey "" | |
ClearErrors | |
; | |
;*********************************************** | |
; Определяем, установлен ли Visual C++: msvcpXX.dll | |
; 50, 60, 70, 71, 100, 110, 120, 140 | |
; и пишем все ответы в одну переменную: | |
!ifdef VCR | |
; 2005: | |
${If} $OS_Version < 4 | |
${If} ${FileExists} `$OS_Drive\Windows\System32\msvcp50.dll` ; 80! 50 | |
StrCpy $VisualC_vers "5, " | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• Visual C++ 2005 установлен." | |
${EndIf} | |
!endif | |
${Else} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Visual C++ 2005 не установлен." | |
${EndIf} | |
!endif | |
${EndIf} | |
${EndIf} | |
; 2008: | |
${If} ${FileExists} `$OS_Drive\Windows\System32\msvcp60.dll` ; 90! 60 | |
StrCpy $VisualC_vers "$VisualC_vers8, " | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• Visual C++ 2008 установлен." | |
${EndIf} | |
!endif | |
${Else} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Visual C++ 2008 НЕ установлен." | |
${EndIf} | |
!endif | |
${EndIf} | |
; 2010: | |
${If} ${FileExists} `$OS_Drive\Windows\System32\msvcp70.dll` ; 100! 70 | |
StrCpy $VisualC_vers "$VisualC_vers10, " | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• Visual C++ 2010 установлен." | |
${EndIf} | |
!endif | |
${Else} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Visual C++ 2010 НЕ установлен." | |
${EndIf} | |
!endif | |
${EndIf} | |
; 2012: | |
${If} ${FileExists} `$OS_Drive\Windows\System32\msvcp71.dll` ; 110! 71 | |
StrCpy $VisualC_vers "$VisualC_vers12, " | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• Visual C++ 2012 установлен." | |
${EndIf} | |
!endif | |
${Else} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Visual C++ 2012 НЕ установлен." | |
${EndIf} | |
!endif | |
${EndIf} | |
; 2013: | |
${If} ${FileExists} `$OS_Drive\Windows\System32\msvcp100.dll` ; 120! 100 | |
StrCpy $VisualC_vers "$VisualC_vers13, " | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• Visual C++ 2013 установлен." | |
${EndIf} | |
!endif | |
${Else} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Visual C++ 2013 НЕ установлен." | |
${EndIf} | |
!endif | |
${EndIf} | |
; 2015: | |
${If} ${FileExists} `$OS_Drive\Windows\System32\msvcp110.dll` | |
StrCpy $VisualC_vers "$VisualC_vers15, " | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• Visual C++ 2015 установлен." | |
${EndIf} | |
!endif | |
${Else} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Visual C++ 2015 НЕ установлен." | |
${EndIf} | |
!endif | |
${EndIf} | |
; 2017: | |
${If} ${FileExists} `$OS_Drive\Windows\System32\msvcp120.dll` | |
StrCpy $VisualC_vers "$VisualC_vers17, " | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• Visual C++ 2017 установлен." | |
${EndIf} | |
!endif | |
${Else} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Visual C++ 2017 НЕ установлен." | |
${EndIf} | |
!endif | |
${EndIf} | |
; 2019- 2022: | |
${If} ${FileExists} `$OS_Drive\Windows\System32\msvcp140.dll` ; 140! 140 | |
StrCpy $VisualC_vers "$VisualC_vers19" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• Visual C++ 2019–2022 установлен." | |
${EndIf} | |
!endif | |
${Else} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Visual C++ 2019–2022 НЕ установлен." | |
${EndIf} | |
!endif | |
${EndIf} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
!endif | |
; | |
;*********************************************************************** | |
; Проверка установлена ли программа: | |
; Если установлена - снимаем галочку и скрываем секцию. | |
; | |
# Network: | |
; Firefox и Basilisk: | |
; Windows 7, 8, 8.1, 10, 11: | |
!ifdef Firefox | |
${If} $OS_Version > 3 | |
${UnSelecta} ${Firefox} "$PortableDir\FirefoxPortable" "Firefox: браузер" 0 "Firefox" | |
${EndIf} | |
!endif | |
; | |
!ifdef Basilisk | |
${UnSelecta} ${Basilisk} "$PortableDir\Basilisk" "Basilisk: браузер (Firefox 68.9)" 0 "Basilisk" | |
!endif | |
; | |
; Google Chrome: | |
!ifdef Chrome | |
${If} $OS_Version > 3 | |
${UnSelecta} ${Chrome} "$PortableDir\GoogleChromePortable" "Google Chrome: браузер" 0 "Chrome" | |
${Else} | |
!insertmacro UnselectSection ${Chrome} | |
SectionSetSize ${Chrome} 1 | |
SectionSetText ${Chrome} "" | |
${EndIf} | |
!endif | |
; Opera: | |
!ifdef Opera | |
${If} $OS_Version > 3 | |
${UnSelecta} ${Opera} "$PortableDir\OperaPortable" "Opera: браузер" 0 "Opera" | |
${Else} | |
!insertmacro UnselectSection ${Opera} | |
SectionSetSize ${Opera} 1 | |
SectionSetText ${Opera} "" | |
${EndIf} | |
!endif | |
; | |
!ifdef uTorrent | |
${UnSelecta} ${uTorrent} "$PortableDir\uTorrent" "uTorrent: торрент-клиент" 0 "uTorrent" | |
!endif | |
; | |
!ifdef Skype | |
; Скайп не работает на XP: | |
${If} $OS_Version < 4 | |
!insertmacro UnselectSection ${Skype} | |
SectionSetSize ${Skype} 1 | |
SectionSetText ${Skype} "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Skype НЕ может быть установлен на Windows XP!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${Else} | |
${UnSelecta} ${Skype} "Microsoft\Skype for Desktop" "Skype" 1 "Skype" | |
${EndIf} | |
!endif | |
; | |
!ifdef AmmyyAdmin | |
${UnSelecta} ${AmmyyAdmin} "$PortableDir\AmmyyAdmin" "AmmyyAdmin: удалённое управление" 0 "AmmyyAdmin" | |
!endif | |
; | |
!ifdef AnyDesk | |
${UnSelecta} ${AnyDesk} "$PortableDir\AnyDesk" "AnyDesk: удалённое управление" 0 "AnyDesk" | |
!endif | |
; | |
!ifdef BitSpirit | |
${UnSelecta} ${BitSpirit} "$PortableDir\BitSpirit\BitSpirit_Portable.exe" "BitSpirit: торрент-клиент" 0 "BitSpirit Торрент" | |
!endif | |
; | |
!ifdef IDM | |
${If} $is64 == 1 | |
${UnSelecta} ${IDM} "$OS_Drive\Program Files (x86)\Internet Download Manager\IDMan.exe" "Internet Download Manager: помощник загрузки" 0 "IDM" | |
${Else} | |
${UnSelecta} ${IDM} "$OS_Drive\Program Files\Internet Download Manager\IDMan.exe" "Internet Download Manager: помощник загрузки" 0 "IDM" | |
${EndIf} | |
!endif | |
; | |
; | |
# Media: | |
!ifdef WinCDEmu | |
${UnSelecta} ${WinCDEmu} "$PortableDir\WinCDEmu\WinCDEmu-Portable.exe" "WinCDEmu: монтирование образов дисков" 0 "WinCDEmu" | |
!endif | |
; | |
!ifdef PotPlayer | |
${UnSelecta} ${PotPlayer} "$PortableDir\PotPlayerPortable" "PotPlayer: мультимедиа проигрыватель" 0 "PotPlayer" | |
!endif | |
; | |
!ifdef Imagine | |
${UnSelecta} ${Imagine} "$PortableDir\Imagine" "Imagine: просмотр изображений" 0 "Imagine" | |
!endif | |
; | |
!ifdef AnyBurn | |
${UnSelecta} ${AnyBurn} "$PortableDir\AnyBurn" "AnyBurn: запись дисков" 0 "AnyBurn" | |
!endif | |
; | |
!ifdef GoldWave | |
${UnSelecta} ${GoldWave} "$PortableDir\GoldWave" "GoldWave: редактор звуковых файлов" 0 "GoldWave" | |
!endif | |
; | |
; | |
# Office: | |
!ifdef AkelPad | |
; AkelPad фикс: | |
${If} ${FileExists} `$OS_Drive\Windows\notepad_AkelUndo.exe` | |
${UnSelecta} ${AkelPad} "$OS_Drive\Windows\notepad_AkelUndo.exe" "AkelPad: текстовый редактор" 0 "Блокнот" | |
${Else} | |
${If} ${FileExists} `$OS_Drive\Program Files\AkelPad\AkelPad.exe` | |
${UnSelecta} ${AkelPad} "AkelPad\AkelPad.exe" "AkelPad: текстовый редактор" 1 "Блокнот" | |
${Else} | |
${UnSelecta} ${AkelPad} "AkelPad\AkelPad.exe" "AkelPad: текстовый редактор" 1 "Блокнот" | |
${EndIf} | |
${EndIf} | |
!endif | |
; | |
!ifdef SumatraPDF | |
${UnSelecta} ${SumatraPDF} "$PortableDir\SumatraPDF" "SumatraPDF: чтение PDF и электронных книг" 0 "Просмотр PDF и DJVU" | |
!endif | |
; | |
!ifdef STDUViewer | |
;${UnSelecta} ${STDUViewer} "$PortableDir\stduviewer" "STDU Viewer: чтение PDF и электронных книг" 0 | |
${UnSelecta} ${STDUViewer} "STDU Viewer\STDUViewerApp.exe" "STDU Viewer: чтение PDF и электронных книг" 1 "STDUViewer" | |
!endif | |
; | |
!ifdef AlReader2 | |
${UnSelecta} ${AlReader2} "$PortableDir\AlReader2" "AlReader2: Кофмортное чтение электронных книг" 0 "AlReader2" | |
!endif | |
; | |
!ifdef FreeVK | |
${UnSelecta} ${FreeVK} "$PortableDir\FreeVK.exe" "FreeVirtualKeyboard: экранная клавиатура" 0 "FreeVK" | |
!endif | |
; | |
!ifdef PuntoSwitcher | |
${UnSelecta} ${PuntoSwitcher} "$PortableDir\PuntoSwitcher\PuntoSwitcherPortable.exe" "PuntoSwitcher: Переключатель раскладки" 0 "PuntoSwitcher" | |
!endif | |
; | |
; Microsoft Office: | |
!ifdef MSOffice2003 | |
${UnSelecta} ${MSOffice2003} "Microsoft Office\Office11\WINWORD.EXE" "Microsoft Office 2003" 1 "MSOffice2003" | |
!ifdef MSOffice2016 | |
!insertmacro UnselectSection ${MSOffice2016} | |
SectionSetSize ${MSOffice2016} 1 | |
SectionSetText ${MSOffice2016} "" | |
!endif | |
!ifdef MSOffice2010 | |
!insertmacro UnselectSection ${MSOffice2010} | |
SectionSetSize ${MSOffice2010} 1 | |
SectionSetText ${MSOffice2010} "" | |
!endif | |
!ifdef MSOffice2007 | |
!insertmacro UnselectSection ${MSOffice2007} | |
SectionSetSize ${MSOffice2007} 1 | |
SectionSetText ${MSOffice2007} "" | |
!endif | |
!endif | |
!ifdef MSOffice2007 | |
${UnSelecta} ${MSOffice2007} "Microsoft Office\Office12\WINWORD.EXE" "Microsoft Office 2007" 1 "MSOffice2007" | |
!ifdef MSOffice2016 | |
!insertmacro UnselectSection ${MSOffice2016} | |
SectionSetSize ${MSOffice2016} 1 | |
SectionSetText ${MSOffice2016} "" | |
!endif | |
!ifdef MSOffice2010 | |
!insertmacro UnselectSection ${MSOffice2010} | |
SectionSetSize ${MSOffice2010} 1 | |
SectionSetText ${MSOffice2010} "" | |
!endif | |
!ifdef MSOffice2003 | |
!insertmacro UnselectSection ${MSOffice2003} | |
SectionSetSize ${MSOffice2003} 1 | |
SectionSetText ${MSOffice2003} "" | |
!endif | |
!endif | |
!ifdef MSOffice2010 | |
${UnSelecta} ${MSOffice2010} "Microsoft Office\Office14\WINWORD.EXE" "Microsoft Office 2010" 1 "MSOffice2010" | |
!ifdef MSOffice2016 | |
!insertmacro UnselectSection ${MSOffice2016} | |
SectionSetSize ${MSOffice2016} 1 | |
SectionSetText ${MSOffice2016} "" | |
!endif | |
!ifdef MSOffice2007 | |
!insertmacro UnselectSection ${MSOffice2007} | |
SectionSetSize ${MSOffice2007} 1 | |
SectionSetText ${MSOffice2007} "" | |
!endif | |
!ifdef MSOffice2003 | |
!insertmacro UnselectSection ${MSOffice2003} | |
SectionSetSize ${MSOffice2003} 1 | |
SectionSetText ${MSOffice2003} "" | |
!endif | |
!endif | |
!ifdef MSOffice2016 | |
${UnSelecta} ${MSOffice2016} "Microsoft Office\Office16\WINWORD.EXE" "Microsoft Office 2016" 1 "MSOffice2016" | |
!ifdef MSOffice2010 | |
!insertmacro UnselectSection ${MSOffice2010} | |
SectionSetSize ${MSOffice2010} 1 | |
SectionSetText ${MSOffice2010} "" | |
!endif | |
!ifdef MSOffice2007 | |
!insertmacro UnselectSection ${MSOffice2007} | |
SectionSetSize ${MSOffice2007} 1 | |
SectionSetText ${MSOffice2007} "" | |
!endif | |
!ifdef MSOffice2003 | |
!insertmacro UnselectSection ${MSOffice2003} | |
SectionSetSize ${MSOffice2003} 1 | |
SectionSetText ${MSOffice2003} "" | |
!endif | |
!endif | |
; | |
; OpenOffice: | |
!ifdef OpenOffice | |
${UnSelecta} ${OpenOffice} "OpenOffice 4\*.*" "Apache Open Office v4" 1 "OpenOffice" | |
!endif | |
; | |
; WPS Office: | |
!ifdef WPSOffice | |
IntCmp $OS_Version 3 WPS_os WPS_os 0 # == < > | |
IfFileExists "$OS_Drive\Users" 0 WPS_end | |
StrCpy $UsrName "$PROFILE" "" 9 ; 2 is UserName | |
${UnSelecta} ${WPSOffice} "$OS_Drive\Users\$UsrName\AppData\Local\kingsoft\WPS Office\11.2.0.10176\office6\wpsoffice.exe" "WPS Office 11" 1 "WPSOffice" | |
Goto WPS_end | |
WPS_os: | |
!insertmacro UnselectSection ${WPSOffice} | |
SectionSetSize ${WPSOffice} 1 | |
SectionSetText ${WPSOffice} "" | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 WPS_debug | |
${LogThis} "// - WPS Office не может быть установлен на Windows XP!" | |
${LogThis} "//--------------------------------" | |
WPS_debug: | |
!endif | |
WPS_end: | |
!endif | |
; | |
# System: | |
!ifdef Act | |
${UnSelecta} ${Act} "$PortableDir\Aktivators\XP.bat" "Активаторы." 0 "Activators" | |
!endif | |
; | |
!ifdef PFile | |
; Скрываем установку файла подкачки и убираем галочку: | |
ClearErrors | |
ReadRegStr $TempRegKey HKCU "Software\S60Team" "Pagefile" | |
${If} ${Errors} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Файл подкачки НЕ задан!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${Else} | |
${If} $TempRegKey == "Installed" | |
!insertmacro UnselectSection ${PFile} | |
SectionSetSize ${PFile} 1 | |
SectionSetText ${PFile} "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• Файл подкачки задан." | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${EndIf} | |
${EndIf} | |
StrCpy $TempRegKey "" | |
; Скрываем установку файла подкачки и убираем галочку: | |
${If} $TotalRAM > 4098 | |
!insertmacro UnselectSection ${PFile} | |
SectionSetSize ${PFile} 1 | |
SectionSetText ${PFile} "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - ОЗУ больше 4гб. Файл подкачки НЕ задан!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${EndIf} | |
; | |
!endif | |
; | |
; Твики реестра: | |
!ifdef RegTweaks | |
ClearErrors | |
ReadRegStr $TempRegKey HKCU "Software\S60Team" "Tweaks" | |
${If} ${Errors} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Твики реестра НЕ применены!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${Else} | |
${If} $TempRegKey == "Installed" | |
!insertmacro UnselectSection ${RegTweaks} | |
SectionSetSize ${RegTweaks} 1 | |
SectionSetText ${RegTweaks} "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• Твики реестра применены." | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${Else} | |
SectionSetFlags ${RegTweaks} ${SF_SELECTED} | |
${EndIf} | |
${EndIf} | |
StrCpy $TempRegKey "" | |
!endif | |
; | |
!ifdef XPFIXEZ | |
; On Windows Vista its not needed: | |
${If} $OS_Version > 2 | |
!insertmacro UnselectSection ${XPFIXEZ} | |
SectionSetSize ${XPFIXEZ} 1 | |
SectionSetText ${XPFIXEZ} "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Исправления не нужны для Windows позже XP." | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${EndIf} | |
; On Windows XP or Windows XP x64 this is needed! | |
${If} $OS_Version < 3 | |
ClearErrors | |
ReadRegStr $TempRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB955704" "DisplayVersion" | |
${If} ${Errors} | |
SectionSetFlags ${XPFIXEZ} ${SF_SELECTED} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Исправления НЕ установлены!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${Else} | |
${If} $TempRegKey == 1 | |
!insertmacro UnselectSection ${XPFIXEZ} | |
SectionSetSize ${XPFIXEZ} 1 | |
SectionSetText ${XPFIXEZ} "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• Исправления установлены: Поддержка exFAT, Windows Media Player v11 и Installer v4.5." | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${EndIf} | |
${EndIf} | |
StrCpy $TempRegKey "" | |
${EndIf} | |
; | |
!endif | |
; | |
; HOSTS файл: | |
!ifdef HOSTS | |
${GetSize} "$OS_Drive\Windows\System32\drivers\etc" "/M=hosts /S=0B /G=0" $0 $1 $2 | |
${If} $0 == 3287 | |
!insertmacro UnselectSection ${HOSTS} | |
SectionSetSize ${HOSTS} 1 | |
SectionSetText ${HOSTS} "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• Файл HOSTS задан верно." | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${Else} | |
ClearErrors | |
ReadRegStr $TempRegKey HKCU "Software\S60Team" "HOSTS" | |
${If} ${Errors} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Файл HOSTS НЕ установлен!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${Else} | |
${If} $TempRegKey == "Installed" | |
!insertmacro UnselectSection ${HOSTS} | |
SectionSetSize ${HOSTS} 1 | |
SectionSetText ${HOSTS} "" | |
!ifdef Dabug | |
${Else} | |
${If} $Debug == 1 | |
${LogThis} "// - Файл HOSTS НЕ ЗАДАН!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${EndIf} | |
${EndIf} | |
${EndIf} | |
; Чистим мусор: | |
StrCpy $0 "" ; Размер файла HOSTS. | |
StrCpy $1 "" ; переменная для получения размера файла HOSTS. | |
StrCpy $2 "" ; переменная для получения размера файла HOSTS. | |
StrCpy $TempRegKey "" ; Считываем из реестра, установлено ли приложение. | |
!endif | |
; | |
; Альтернативный пуск для Windows 8, 8.1 и 10: | |
!ifdef OpenShell | |
${If} $OS_Version > 4 | |
${UnSelecta} ${OpenShell} "Open-Shell\StartMenu.exe" "OpenShell: Альтернативный Пуск для Windows 8 и 10." 1 "OpenShell" | |
${Else} | |
!insertmacro UnselectSection ${OpenShell} | |
SectionSetSize ${OpenShell} 1 | |
SectionSetText ${OpenShell} "" | |
${EndIf} | |
!endif | |
; | |
!ifdef SIB | |
${If} $OS_Version > 4 | |
${UnSelecta} ${SIB} "StartIsBack\StartIsBack32.dll" "StartIsBack: Альтернативный Пуск для Windows 8 и 10." 1 "StartIsBack" | |
${Else} | |
!insertmacro UnselectSection ${SIB} | |
SectionSetSize ${SIB} 1 | |
SectionSetText ${SIB} "" | |
${EndIf} | |
!endif | |
; | |
!ifdef VCR | |
${UnSelecta} ${VCR} "$OS_Drive\Windows\System32\msvcp100.dll" "Visual C++ Redist: библиотеки." 0 "Visual C++ AIO" | |
!endif | |
; | |
!ifdef DirectX | |
${UnSelecta} ${DirectX} "$OS_Drive\Windows\System32\d3dx11_43.dll" "DirectX: библиотеки." 0 "DirectX" | |
!endif | |
; | |
; nVidia PhysX: (репак, ставит и легаси) | |
!ifdef PhysX | |
;HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\PhysX_SystemSoftware | |
${UnSelecta} ${PhysX} "NVIDIA Corporation\PhysX\Engine\v2.8.3\PhysXCore.dll" "NVIDIA PhysX: библиотеки." 1 "PhysX" | |
!endif | |
; | |
!ifdef NET4 | |
; Отключаем .NET Framework 4 на Windows 7,8,10 | |
IntCmp $OS_Version 3 NET4_next NET4_next 0 # == < > | |
!insertmacro UnselectSection ${NET4} | |
SectionSetSize ${NET4} 1 | |
SectionSetText ${NET4} "" | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 NET4_debug0 | |
${LogThis} "• .NET Framework v4 уже встроен в ОС." | |
${LogThis} "//--------------------------------" | |
NET4_debug0: | |
!endif | |
Goto NET4_end | |
NET4_next: | |
ClearErrors | |
EnumRegKey $TempRegKey HKLM "SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\Client" 0 | |
IfErrors 0 NET_keyexist | |
Goto NET_notexist | |
NET_keyexist: | |
!insertmacro UnselectSection ${NET4} | |
SectionSetSize ${NET4} 1 | |
SectionSetText ${NET4} "" | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 NET4_debug1 | |
${LogThis} "• .NET Framework v4.0.30319" | |
${LogThis} "//--------------------------------" | |
NET4_debug1: | |
!endif | |
Goto NET_exend | |
NET_notexist: | |
# не установлен. | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 NET4_debug2 | |
${LogThis} "// - .NET Framework v4.0 НЕ установлен!" | |
${LogThis} "//--------------------------------" | |
NET4_debug2: | |
!endif | |
NET_exend: | |
NET4_end: | |
; Чистим мусор: | |
StrCpy $TempRegKey "" | |
# Было: | |
; $OS_Drive\Program Files (x86)\Microsoft.NET\RedistList\AssemblyList_4_client.xml | |
; $OS_Drive\WINDOWS\Microsoft.NET\Framework\v4.0.30319\mscorsvw.exe | |
;${UnSelecta} ${NET4} "$OS_Drive\WINDOWS\Microsoft.NET\Framework\v4.0.30319\mscorsvw.exe" ".NET Framework v4.0.30319" 0 ".NET Framework v4" | |
;${UnSelecta} ${NET4} "Microsoft.NET\RedistList\AssemblyList_4_client.xml" ".NET Framework v4.0" 0 ".NET Framework v4" | |
;${UnSelecta} ${NET4} "Microsoft.NET\RedistList\AssemblyList_4_client.xml" ".NET Framework v4.0" 0 ".NET47" | |
!endif | |
; | |
; .NET Framework: | |
!ifdef NET47 | |
${If} $OS_Version < 4 | |
!insertmacro UnselectSection ${NET47} | |
SectionSetSize ${NET47} 1 | |
SectionSetText ${NET47} "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - .NET Framework v4.7 не может быть установлен на Windows XP!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${Else} | |
${UnSelecta} ${NET47} "Microsoft.NET\RedistList\AssemblyList_4_client.xml" ".NET Framework v4.7+" 0 ".NET47" | |
${EndIf} | |
!endif | |
; | |
!ifdef NET48 | |
${If} $OS_Version < 4 | |
!insertmacro UnselectSection ${NET48} | |
SectionSetSize ${NET48} 1 | |
SectionSetText ${NET48} "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - .NET Framework v4.8 не может быть установлен на Windows XP!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${Else} | |
${UnSelecta} ${NET48} "Microsoft.NET\RedistList\AssemblyList_4_client.xml" ".NET Framework v4.8+" 0 ".NET48" | |
${EndIf} | |
!endif | |
; | |
; XNA Framework v4: | |
!ifdef XNAFramework | |
${UnSelecta} ${XNAFramework} "Microsoft XNA\XNA Game Studio\v4.0\Redist\DX Redist\DXSETUP.exe" "XNA Framework v4: библиотеки." 1 "XNAFramework" | |
!endif | |
; | |
!ifdef OpenAL | |
;${UnSelecta} ${OpenAL} "OpenAL\oalinst.exe" "OpenAL: Open Audio Library" 1 | |
ClearErrors | |
ReadRegStr $TempRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenAL" "DisplayName" | |
${If} ${Errors} | |
;${LogThis} " ~ OpenAl is not installed." | |
${Else} | |
${If} $TempRegKey == "OpenAl" | |
!insertmacro UnselectSection ${OpenAl} | |
SectionSetSize ${OpenAl} 1 | |
SectionSetText ${OpenAl} "" | |
${EndIf} | |
${EndIf} | |
; Чистим мусор: | |
StrCpy $TempRegKey "" | |
!endif | |
; | |
; Java Runtime | |
!ifdef JRE | |
${UnSelecta} ${JRE} "Java" "Java Runtime: библиотеки." 1 "Java JRE" | |
!endif | |
; | |
!ifdef WiseDiskCleaner | |
${UnSelecta} ${WiseDiskCleaner} "$PortableDir\WiseDiskCleaner" "WiseDiskCleaner: очистка и дефрагментация диска" 0 "WiseDiskCleaner" | |
!endif | |
; | |
!ifdef WiseRegCleaner | |
${UnSelecta} ${WiseRegCleaner} "$PortableDir\WiseRegCleaner" "WiseRegCleaner: очистка и дефрагментация реестра" 0 "WiseRegCleaner" | |
!endif | |
; | |
!ifdef 7zip | |
${UnSelecta} ${7zip} "7-Zip\7zFM.exe" "7-Zip: архиватор" 1 "7zip" | |
!endif | |
; | |
!ifdef WinRAR | |
ClearErrors | |
ReadRegStr $TempRegKey HKCU "SOFTWARE\WinRAR\Profiles\0" "Name" | |
${If} ${Errors} | |
ClearErrors | |
ReadRegStr $TempRegKey HKLM "SOFTWARE\WinRAR" "exe32" | |
${If} ${Errors} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - WinRAR НЕ установлен!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${Else} | |
!insertmacro UnselectSection ${WinRAR} | |
SectionSetSize ${WinRAR} 1 | |
SectionSetText ${WinRAR} "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• WinRAR установлен." | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${EndIf} | |
; Чистим мусор: | |
StrCpy $TempRegKey "" | |
${Else} | |
!insertmacro UnselectSection ${WinRAR} | |
SectionSetSize ${WinRAR} 1 | |
SectionSetText ${WinRAR} "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "• WinRAR установлен." | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${EndIf} | |
!endif | |
; | |
!ifdef TotalCommander | |
${If} ${FileExists} "$OS_Drive\totalcmd\totalcmd.exe" | |
${UnSelecta} ${TotalCommander} "$OS_Drive\totalcmd\totalcmd.exe" "TotalCommander v10: Файловый менеджер." 0 "TotalCommander" | |
${Else} | |
${UnSelecta} ${TotalCommander} "$OS_Drive\Program Files\totalcmd\totalcmd.exe" "TotalCommander v10: Файловый менеджер." 0 "TotalCommander" | |
${EndIf} | |
!endif | |
; | |
; Win10Tweaker: | |
!ifdef Win10Tweaker | |
${If} $OS_Version < 7 | |
SectionSetSize ${Win10Tweaker} 1 | |
SectionSetText ${Win10Tweaker} "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "- Win10Tweaker не может быть установлен на ОС ниже 10!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${ElseIf} $OS_Version > 6 | |
ClearErrors | |
ReadRegStr $TempRegKey HKCU "Software\S60Team" "Win10Tweaker" | |
${If} ${Errors} | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - Win10Tweaker не установлен!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${Else} | |
${If} $TempRegKey == "Installed" | |
!insertmacro UnselectSection ${Win10Tweaker} | |
SectionSetSize ${Win10Tweaker} 1 | |
SectionSetText ${Win10Tweaker} "" | |
${Else} | |
SectionSetSize ${Win10Tweaker} 1380 ; Для Windows 10 | |
${EndIf} | |
${EndIf} | |
StrCpy $TempRegKey "" | |
${EndIf} | |
!endif | |
; | |
!ifdef TinyWall | |
${If} $OS_Version > 3 | |
${UnSelecta} ${TinyWall} "TinyWall\TinyWall.exe" "TinyWall: firewall" 1 "TinyWall" | |
${Else} | |
!insertmacro UnselectSection ${TinyWall} | |
SectionSetSize ${TinyWall} 1 | |
SectionSetText ${TinyWall} "" | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "// - TinyWall НЕ может быть установлен на Windows XP!" | |
${LogThis} "//--------------------------------" | |
${EndIf} | |
!endif | |
${EndIf} | |
!endif | |
; | |
!ifdef HWInfo | |
${UnSelecta} ${HWInfo} "$PortableDir\HWInfo" "HWInfo: о вашем компьютере" 0 "HWInfo" | |
!endif | |
; | |
# Others: | |
; Add AVG and Comodo! | |
; | |
; Squid прокси-сервер: | |
!ifdef Squid | |
${UnSelecta} ${Squid} "$OS_Drive\squid\sbin\squid.exe" "Squid: прокси-сервер" 0 "Squid" | |
!endif | |
; | |
; TrueTransparency: | |
!ifdef TT | |
;StrCmp $OS_Version "3" Selectn_TT Selecty_TT | |
IntCmp $OS_Version 3 Selecty_TT Selecty_TT Selectn_TT # == < > | |
Selecty_TT: | |
${UnSelecta} ${TT} "$PortableDir\TrueTransparency\TrueTransparency.exe" "TrueTransparency: скины окон для XP" 0 "TrueTransparency" | |
Selectn_TT: | |
!insertmacro UnselectSection ${TT} | |
SectionSetSize ${TT} 1 | |
SectionSetText ${TT} "" | |
!endif | |
; | |
; | |
;*********************************************** | |
; Указываем размеры установленных программ | |
; и скрываем Секции в зависимости от ОС: | |
; Для XP: | |
${If} $OS_Version < 4 | |
; Место на диске: | |
!ifdef 7zip | |
SectionSetSize ${7zip} 4000 | |
!endif | |
!ifdef JRE | |
SectionSetSize ${JRE} 76000 | |
!endif | |
; Отключение секций не для XP: | |
!ifdef MSOffice2016 | |
SectionSetText ${MSOffice2016} "" | |
SectionSetSize ${MSOffice2016} 1 | |
!endif | |
!ifdef WPSOffice | |
SectionSetText ${WPSOffice} "" | |
SectionSetSize ${WPSOffice} 1 | |
!endif | |
!ifdef Basilisk | |
SectionSetSize ${Basilisk} 141782 | |
!endif | |
; | |
!ifdef Firefox | |
SectionSetText ${Firefox} "" | |
SectionSetSize ${Firefox} 1 | |
!endif | |
; | |
; Для 7ки и выше: | |
${Else} | |
; Место на диске: | |
!ifdef 7zip | |
SectionSetSize ${7zip} 5330 | |
!endif | |
!ifdef MSOffice2016 | |
SectionSetSize ${MSOffice2016} 834000 | |
!endif | |
!ifdef Opr | |
SectionSetSize ${Opr} 193000 | |
!endif | |
!ifdef JRE | |
SectionSetSize ${JRE} 68000 | |
!endif | |
!ifdef WPSOffice | |
SectionSetSize ${WPSOffice} 850000 | |
!endif | |
!ifdef Skype | |
SectionSetSize ${Skype} 80525 | |
!endif | |
!ifdef Firefox | |
SectionSetSize ${Firefox} 244000 | |
!endif | |
; Отключение секций не для XP: | |
!ifdef Basilisk | |
SectionSetSize ${Basilisk} 1 | |
SectionSetText ${Basilisk} "" | |
!endif | |
; | |
${EndIf} | |
; | |
;*********************************************** | |
; DirectX: x86 или x64 (в зависимости от битности) | |
!ifdef DirectX | |
${If} $is64 == 1 | |
SectionSetSize ${DirectX} 275000 | |
${Else} | |
SectionSetSize ${DirectX} 143000 | |
${EndIf} | |
!endif | |
; | |
;*********************************************** | |
; Отладка: | |
!ifdef Dabug | |
${If} $Debug == 1 | |
${LogThis} "//----------------------------------------------------------------" | |
${LogThis} " Установка/распаковка программ:" | |
${EndIf} | |
!endif | |
; | |
;*********************************************** | |
; | |
FunctionEnd | |
; | |
;*********************************************** | |
; Добавляем описание к программам, ели установлен флаг: | |
!ifndef OldLook | |
!ifdef DESCSON | |
; Описание секций, часть II: | |
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN | |
!ifdef Firefox | |
!insertmacro MUI_DESCRIPTION_TEXT ${Firefox} $(DESC_FF) | |
!endif | |
!insertmacro MUI_FUNCTION_DESCRIPTION_END | |
!endif | |
!endif | |
; | |
;*********************************************** | |
; При закрытии окна установки: | |
Function .onGUIEnd | |
!ifdef Dabug | |
StrCmp $Debug "1" 0 on_GUI_end | |
${LogThis} "//----------------------------------------------------------------" | |
${LogThis} " Работа программы завершена." | |
${LogThis} "//----------------------------------------------------------------$\r$\n" | |
on_GUI_end: | |
!endif | |
FunctionEnd | |
; | |
; Установка успешно завершена: | |
;Function .onInstSuccess | |
;FunctionEnd | |
; | |
; При отмене пользователем: | |
;Function .onUserAbort | |
;FunctionEnd | |
; | |
; MUI2: | |
;!define MUI_CUSTOMFUNCTION_ABORT "Моя_функция" | |
;*********************************************** | |
; eof |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment