Advertisement
putintsev

Starfield The Perfect Recipe install code for InnoSetup

Nov 30th, 2024 (edited)
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Inno Script 14.37 KB | Source Code | 0 0
  1. ; Script generated by the Inno Setup Script Wizard.
  2. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
  3.  
  4. #define MyAppName "The Perfect Recipe"
  5. #define MyVersionInfo="0.1.0.4"
  6. #define MyAppVersion "v21 11/8/2024"
  7. #define MyAppPublisher "BethesdaGameStudios"
  8. #define MyAppURL "https://creations.bethesda.net/en/starfield/details/daa65855-1e97-495d-aa7d-fd675e40024c/The_Perfect_Recipe"
  9. #define MyAppExeName "PerfectRecipe.exe"
  10.  
  11. [Setup]
  12. AppId={{B642ECAD-1F90-4E03-BABB-F7FAD0AE4322}
  13. AppName={#MyAppName}
  14. AppVersion={#MyAppVersion}
  15. AppPublisher={#MyAppPublisher}
  16. AppPublisherURL={#MyAppURL}
  17. AppSupportURL={#MyAppURL}
  18. AppUpdatesURL={#MyAppURL}
  19. ArchitecturesAllowed=x64compatible
  20. ArchitecturesInstallIn64BitMode=x64compatible
  21. DefaultGroupName={#MyAppName}
  22. DisableProgramGroupPage=yes
  23. PrivilegesRequiredOverridesAllowed=dialog
  24. OutputBaseFilename=PerfectRecipe
  25. Compression=lzma2
  26. SolidCompression=yes
  27. WizardStyle=modern
  28. LanguageDetectionMethod=UILanguage
  29. DefaultDirName=C:\Games\Starfield.Digital.Premium.Edition-InsaneRamZes\
  30. OutputDir=D:\media\!Downloads\Starfield_mods\PerfectRecipe\
  31. SetupIconFile=D:\media\!Downloads\Starfield_mods\favicon.ico
  32. InfoBeforeFile=D:\media\!Downloads\Starfield_mods\PerfectRecipe\Description_eng.txt
  33. LicenseFile=D:\media\!Downloads\Starfield_mods\!License\mit_eng.txt
  34. VersionInfoVersion={#MyVersionInfo}
  35. AppendDefaultDirName=No
  36.  
  37. [Languages]
  38. Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
  39. Name: "english"; MessagesFile: "compiler:Default.isl"
  40.  
  41. [Files]
  42. Source: "D:\media\!Downloads\Starfield_mods\PerfectRecipe\The Perfect Recipe v21\sfbgs00c.esm"; DestDir: "{app}\data"; Flags: ignoreversion
  43. Source: "D:\media\!Downloads\Starfield_mods\PerfectRecipe\The Perfect Recipe v21\sfbgs00c - main.ba2"; DestDir: "{app}\data"; Flags: ignoreversion
  44. Source: "D:\media\!Downloads\Starfield_mods\PerfectRecipe\The Perfect Recipe v21\sfbgs00c - textures.ba2"; DestDir: "{app}\data"; Flags: ignoreversion
  45. Source: "D:\media\!Downloads\Starfield_mods\PerfectRecipe\The Perfect Recipe v21\sfbgs00c - voices_de.ba2"; DestDir: "{app}\data"; Flags: ignoreversion
  46. Source: "D:\media\!Downloads\Starfield_mods\PerfectRecipe\The Perfect Recipe v21\sfbgs00c - voices_en.ba2"; DestDir: "{app}\data"; Flags: ignoreversion
  47. Source: "D:\media\!Downloads\Starfield_mods\PerfectRecipe\The Perfect Recipe v21\sfbgs00c - voices_es.ba2"; DestDir: "{app}\data"; Flags: ignoreversion
  48. Source: "D:\media\!Downloads\Starfield_mods\PerfectRecipe\The Perfect Recipe v21\sfbgs00c - voices_fr.ba2"; DestDir: "{app}\data"; Flags: ignoreversion
  49. Source: "D:\media\!Downloads\Starfield_mods\PerfectRecipe\The Perfect Recipe v21\sfbgs00c - voices_ja.ba2"; DestDir: "{app}\data"; Flags: ignoreversion
  50.  
  51. [Icons]
  52. Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
  53. Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
  54.  
  55. [CustomMessages]
  56. russian.DescriptionFile=Описание на русском.
  57. russian.LicenseFile=Лицензия на русском.
  58. russian.StarfieldIniMissing=Файл "Starfield.ini" не найден в выбранном каталоге. Пожалуйста, выберите корректный каталог.
  59. russian.CreateFolderError=Ошибка. Не удалось создать каталог:
  60. english.DescriptionFile=Description in English.
  61. english.LicenseFile=License in English.
  62. english.StarfieldIniMissing=The file "Starfield.ini" was not found in the selected folder. Please choose the correct folder.
  63. english.CreateFolderError=Error. Failed to create the directory:
  64.  
  65. [Code]
  66. var
  67.   TargetFolder, TargetFile, PluginEntry: string;
  68.   //DescriptionPath, LicensePath: string;
  69.  
  70. //Пропишем основные пути и файлы  
  71. procedure InitializeGlobals;
  72. begin
  73.   TargetFolder := ExpandConstant('{localappdata}\starfield\');
  74.   TargetFile := TargetFolder + 'plugins.txt';
  75.   PluginEntry := '*sfbgs00c.esm';
  76.   //DescriptionPath := 'D:\media\!Downloads\Starfield_mods\PerfectRecipe\';
  77.  // LicensePath := 'D:\media\!Downloads\Starfield_mods\!License\';
  78. end;
  79.  
  80. //Проверяем наличие Starfield.ini, чтобы убедиться, что пользователь выбрал корректный каталог с игрой
  81. function CheckStarfieldIni(): Boolean;
  82. var
  83.   IniPath: string;
  84. begin
  85.   IniPath := AddBackslash(WizardForm.DirEdit.Text) + 'Starfield.ini';
  86.   Result := FileExists(IniPath);
  87.   if not Result then
  88.     MsgBox(ExpandConstant('{cm:StarfieldIniMissing}'), mbError, MB_OK);
  89. end;
  90.  
  91. //Если каталог выбран невереный, то не пускаем дальше
  92. function NextButtonClick(CurPageID: Integer): Boolean;
  93. begin
  94.   Result := True;
  95.   if CurPageID = wpSelectDir then
  96.   begin
  97.     if not CheckStarfieldIni() then
  98.       Result := False;
  99.   end;
  100. end;
  101.  
  102. //Проверяем наличие каталога и создаём если его нет
  103. procedure EnsureDirectoryExists(Dir: string);
  104. begin
  105.   if not DirExists(Dir) then
  106.   begin
  107.     if not CreateDir(Dir) then
  108.         MsgBox(ExpandConstant('{cm:CreateFolderError}' + Dir), mbError, MB_OK);      
  109.   end;
  110. end;
  111.  
  112. //Создаём пустой файл, если он отсутствует
  113. procedure EnsureFileExists(FileName: string);
  114. begin
  115.   if not FileExists(FileName) then
  116.     TStringList.Create.SaveToFile(FileName);
  117. end;
  118.  
  119. //Запускаем проверку и создание каталогов/файлов, добавляем строку в файл.
  120. procedure AddPluginEntry;
  121. var
  122.   FileList: TStringList;
  123. begin
  124.   EnsureDirectoryExists(TargetFolder);
  125.   EnsureFileExists(TargetFile);
  126.   FileList := TStringList.Create;
  127.   try
  128.     FileList.LoadFromFile(TargetFile);
  129.     FileList.Duplicates := dupIgnore;
  130.     if FileList.IndexOf(PluginEntry) = -1 then
  131.       FileList.Add(PluginEntry);
  132.     FileList.SaveToFile(TargetFile);
  133.   finally
  134.     FileList.Free;
  135.   end;
  136. end;
  137.  
  138. //При удалении мода удаляем добавленную строку из файла
  139. procedure RemovePluginEntry;
  140. var
  141.   FileList: TStringList;
  142.   i: Integer;
  143. begin
  144.   if not FileExists(TargetFile) then
  145.     Exit;
  146.  
  147.   FileList := TStringList.Create;
  148.   try
  149.     FileList.LoadFromFile(TargetFile);
  150.     for i := FileList.Count - 1 downto 0 do
  151.     begin
  152.       if CompareText(FileList[i], PluginEntry) = 0 then
  153.         FileList.Delete(i);
  154.     end;
  155.     FileList.SaveToFile(TargetFile);
  156.   finally
  157.     FileList.Free;
  158.   end;
  159. end;
  160.  
  161. //При удалении запускаем удаление строки из файла
  162. procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
  163. begin
  164.   if CurUninstallStep = usPostUninstall then
  165.   begin
  166.     InitializeGlobals;
  167.     RemovePluginEntry;
  168.   end;
  169. end;
  170.  
  171. //Встроим описание и лицензию
  172. procedure InitializeWizard;
  173. begin
  174.   if ActiveLanguage = 'russian' then
  175.   begin
  176.     WizardForm.LicenseMemo.Lines.Text := 'Copyright (c) 2024 3-50' + #13#10 +
  177. 'Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (далее — Программное обеспечение), безвозмездно использовать Программное обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, слияние, публикацию, распространение, сублицензирование и/или продажу копий Программного обеспечения, а также лицам, которым предоставляется данное Программное обеспечение, при соблюдении следующих условий:' + #13#10 +
  178. 'Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного обеспечения.' + #13#10 +
  179. 'ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ ГАРАНТИИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО КАКИМ-ЛИБО ИСКАМ, ЗА УЩЕРБ ИЛИ ПО ИНЫМ ТРЕБОВАНИЯМ, В ТОМ ЧИСЛЕ, ПРИ ДЕЙСТВИИ КОНТРАКТА, ДЕЛИКТЕ ИЛИ ИНОЙ СИТУАЦИИ, ВОЗНИКШИМ ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫХ ДЕЙСТВИЙ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.';
  180.     WizardForm.InfoBeforeMemo.Lines.Text := 'Идеальный рецепт v21' + #13#10 +
  181. 'https://creations.bethesda.net/en/starfield/details/daa65855-1e97-495d-aa7d-fd675e40024c/The_Perfect_Recipe' + #13#10 +
  182. 'В книжном магазине Sinclair`s Books в городе Акила можно найти множество историй. Одна из них рассказывает о многообещающем шеф-поваре, чью жизнь разрушила Колониальная война.' + #13#10 +
  183. 'Теперь, спустя десятилетия, он размышляет о пути, которым не пошёл.' + #13#10 +
  184.  + #13#10 +
  185. 'Cпасибо Wolverines за предоставленные файлы.' + #13#10 +
  186.  + #13#10 +
  187. 'Инсталлятор v1.04 делает следующее:' + #13#10 +
  188. '1. В каталог DATA игры копируются файлы: ' + #13#10 +
  189. 'sfbgs00c.esm, sfbgs00c - main.ba2, sfbgs00c - textures.ba2, fbgs00c - voices_de.ba2, sfbgs00c - voices_en.ba2, sfbgs00c - voices_es.ba2, sfbgs00c - voices_fr.ba2, sfbgs00c - voices_ja.ba2;' + #13#10 +
  190. '2. По умолчанию используется путь: C:\Games\Starfield.Digital.Premium.Edition-InsaneRamZes' + #13#10 +
  191. 'ВАЖНО: Если у вас в другом, то укажите (указывать надо каталог с игрой);' + #13#10 +
  192. '3. Для активации мода в файл plugins.txt, который находится здесь %localappdata%\starfield, добавляется строка "*sfbgs00c.esm". Если файл или каталог отсутствуют, то они создаются;' + #13#10 +
  193. '4. Запускать от администратора требуется, если игра находится в каталогах типа program files;' + #13#10 +
  194. '5. При удалении мода внесённые изменения откатываются;' + #13#10 +
  195. '6. ВАЖНО: при игре с модами достижения отключаются, для их включения нужно установить Baka Achievement Enabler (SFSE) (https://www.nexusmods.com/starfield/mods/658).' + #13#10 +
  196.  + #13#10 +
  197. 'Исходный код для InnoSetup 6.*' + #13#10 +
  198. 'https://pastebin.com/PcCXBLX6'
  199.  
  200.   end
  201.   else
  202.   begin
  203.     WizardForm.LicenseMemo.Lines.Text := 'Copyright (c) 2024 3-50' + #13#10 +
  204.     'Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:' + #13#10 +
  205.     'The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.' + #13#10 +
  206.     'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.';
  207.     WizardForm.InfoBeforeMemo.Lines.Text := 'The Perfect Recipe v21' + #13#10 +
  208. 'https://creations.bethesda.net/en/starfield/details/daa65855-1e97-495d-aa7d-fd675e40024c/The_Perfect_Recipe' + #13#10 +
  209. 'You can find many a story at Sinclair`s Books in Akila City. One tells of a promising chef who had his life derailed by the Colony War.' + #13#10 +
  210. 'Now, decades later, he ponders the road not taken.' + #13#10 +
  211.  + #13#10 +
  212. 'Thanks to Wolverines for the provided files.' + #13#10 +
  213.  + #13#10 +
  214. 'The installer v1.04 performs the following actions:' + #13#10 +
  215. '1. Copies the files to the game`s DATA directory:' + #13#10 +
  216. 'sfbgs00c.esm, sfbgs00c - main.ba2, sfbgs00c - textures.ba2, sfbgs00c - voices_de.ba2, sfbgs00c - voices_en.ba2,sfbgs00c - voices_es.ba2, sfbgs00c - voices_fr.ba2,sfbgs00c - voices_ja.ba2;' + #13#10 +
  217. '2. By default, the path is set to C:\Games\Starfield.Digital.Premium.Edition-InsaneRamZes.' + #13#10 +
  218. 'IMPORTANT: If your game is located elsewhere, you must specify the correct directory (the exact folder containing the game).' + #13#10 +
  219. '3. To activate a mod, a line "*sfbgs00c.esm" enabling the mod is added to the plugins.txt file located here: %localappdata%\starfield. If the file or directory is missing, they will be created.' + #13#10 +
  220. '4. Administrator rights are required if the game is installed in system directories like Program Files.' + #13#10 +
  221. '5. When uninstalling the mod, all changes made by the installer are reverted.' + #13#10 +
  222. '6. IMPORTANT: Playing with mods disables achievements. To re-enable them, you must install Baka Achievement Enabler (SFSE) (https://www.nexusmods.com/starfield/mods/658).' + #13#10 +
  223.  + #13#10 +
  224. 'Source Code for InnoSetup 6.*' + #13#10 +
  225. 'https://pastebin.com/PcCXBLX6'
  226.  
  227.   end;
  228. end;
  229.  
  230. function InitializeSetup: Boolean;
  231. begin
  232.   InitializeGlobals;
  233.   AddPluginEntry;
  234.   Result := True;
  235. end;
  236.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement