Skip to content

Instantly share code, notes, and snippets.

@S60Team
Last active February 14, 2022 07:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save S60Team/36a48718640205e14b8a068b2b809c1f to your computer and use it in GitHub Desktop.
Save S60Team/36a48718640205e14b8a068b2b809c1f to your computer and use it in GitHub Desktop.
Silent install Visual C++, DirectX, PhysX, .NET Framework etc.
;***********************************************
; Установщик программ 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