Итак, вот и подоспела вторая часть. Для полноценного рипа нам не хватает скрипта. Что ж, начнем. Достаточно простенький скрипт. В качестве архиватора для игры будем использовать FreeArc. Сам скрипт и сопутствующие файлы во вложении
Код:
!addplugindir "plugins"
!include "nsDialogs.nsh"
; Для распаковки архивов
!define ArcExtract "unarc::ArcExtract /NOUNLOAD"
; Имя продукта
!define PRODUCT_NAME "Hotline Miami 2"
!define PRODUCT_PUBLISHER "Krinkels.inc"
!define PRODUCT_WEB_SITE "https://krinkels.org"
; Запуск инсталятора от имени администратора + метод сжатия файлов в инсталяторе
RequestExecutionLevel admin
SetCompressor /SOLID /FINAL lzma
SetCompressorDictSize 128
!include "MUI.nsh"
!define MUI_ABORTWARNING
!define MUI_ICON "HM2.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; Страница приветствия
!insertmacro MUI_PAGE_WELCOME
; Наша страница, идущая далее после приветствия
; На ней будет отображен выбор, куда устанавливать игру
Page custom PageSelectVersion PageSelectVersion2
; Выбор папки установки
!insertmacro MUI_PAGE_DIRECTORY
; Страница установки файлов
!insertmacro MUI_PAGE_INSTFILES
; Финиш
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_INSTFILES
; Язык инсталятора
!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
BrandingText "Krinkels Inc"
Name "${PRODUCT_NAME}"
OutFile "setup.exe"
InstallDir "$PROGRAMFILES\Hotline Miami 2"
ShowInstDetails show
ShowUnInstDetails show
;**************************************************************
; Наша страничка
Var DialogSH
Var CheckBoxSteam
Var CheckBoxNotSteam
Var RBSteamPath
Var SteamInstall
Function PageSelectVersion
!insertmacro MUI_HEADER_TEXT "Выбор установки" "На этой странице вы можете выбрать тип установки"
nsDialogs::Create 1018
Pop $DialogSH
${NSD_CreateRadioButton} 20 16u 70% 10% "Простая установка"
Pop $CheckBoxSteam
${NSD_CreateRadioButton} 20 32u 70% 10% "Установить в Steam"
Pop $CheckBoxNotSteam
${NSD_SetState} $CheckBoxNotSteam 1
;Путь из реестра
ReadRegStr $R3 HKEY_LOCAL_MACHINE "Software\Valve\Steam" "InstallPath"
IfErrors +1 +2
StrCmp $R3 "" +1 +2
${NSD_CreateLabel} 20 46u 70% 10% "$R3"
Pop $RBSteamPath
nsDialogs::Show
FunctionEnd
Function PageSelectVersion2
; Установка в Steam?
${NSD_GetState} $CheckBoxNotSteam $0
${If} $0 <> 0
; Да
StrCpy $INSTDIR "$R3"
StrCpy $SteamInstall "1"
${Else}
StrCpy $INSTDIR "$PROGRAMFILES\${PRODUCT_NAME}"
StrCpy $SteamInstall "0"
${EndIf}
FunctionEnd
;**************************************************************
Section "Part One"
; Если установка в Steam
${If} $SteamInstall == "1"
SetOutPath "$INSTDIR\steamapps"
File "C:\Steam\steamapps\appmanifest_274170.acf"
SetOutPath "$INSTDIR\depotcache"
File "C:\Steam\depotcache\274172_7199041297203663559.manifest"
File "C:\Steam\depotcache\274175_4640517193330318629.manifest"
SetOutPath "$INSTDIR\steam\games"
File "C:\Steam\steam\games\f4081f57b16e88e9aaedeb81bfb767d379cb23d6.ico"
; Распаковка архива с файлами
; Файл должен находиться рядом с инсталятором
${ArcExtract} "$EXEDIR\Data.bin" "$INSTDIR\steamapps\common\Hotline Miami 2" ""
; Создаем ярлыки
CreateDirectory "$SMPROGRAMS\Hotline Miami 2"
CreateShortCut "$SMPROGRAMS\Hotline Miami 2\Hotline Miami 2.lnk" "steam://rungameid/274170"
CreateShortCut "$DESKTOP\Hotline Miami 2.lnk" "steam://rungameid/274170"
${Else}
; Если не в Steam то просто распаковываем игру в указанную папку
${ArcExtract} "$EXEDIR\Data.bin" "$INSTDIR" ""
; Деинсталятор будет создаваться только если установка не в Steam
WriteUninstaller "$INSTDIR\uninst.exe"
; Создаем ярлыки
CreateDirectory "$SMPROGRAMS\Hotline Miami 2"
CreateShortCut "$SMPROGRAMS\Hotline Miami 2\Hotline Miami 2.lnk" "$INSTDIR\HotlineMiami2.exe"
CreateShortCut "$DESKTOP\Hotline Miami 2.lnk" "$INSTDIR\HotlineMiami2.exe"
${EndIf}
SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "Удаление программы $(^Name) было успешно завершено."
FunctionEnd
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Вы уверены в том, что желаете удалить $(^Name) и все компоненты программы?" IDYES +2
Abort
FunctionEnd
Section Uninstall
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\*"
Delete "$SMPROGRAMS\Hotline Miami 2\Uninstall.lnk"
Delete "$SMPROGRAMS\Hotline Miami 2\Website.lnk"
Delete "$DESKTOP\Hotline Miami 2.lnk"
Delete "$SMPROGRAMS\Hotline Miami 2\Hotline Miami 2.lnk"
RMDir "$SMPROGRAMS\Hotline Miami 2"
RMDir "$INSTDIR"
SetAutoClose true
SectionEnd
Вложения
-
389.4 KB Просмотры: 56