Advertisement
putintsev

Starfield Deimog Vehicle install code for InnoSetup

Nov 23rd, 2024 (edited)
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Inno Script 5.79 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 "Deimog"
  5. #define MyAppVersion "1.0.69"
  6. #define MyAppPublisher "BethesdaGameStudios"
  7. #define MyAppURL "https://creations.bethesda.net/en/starfield/details/e3295393-57db-47ba-91e4-2ba74133856a/Deimog"
  8. #define MyAppExeName "DeimogVehicle.exe"
  9.  
  10. [Setup]
  11. AppId={{D954578E-053C-4D28-A5E2-111D12D6C704}
  12. AppName={#MyAppName}
  13. AppVersion={#MyAppVersion}
  14. AppPublisher={#MyAppPublisher}
  15. AppPublisherURL={#MyAppURL}
  16. AppSupportURL={#MyAppURL}
  17. AppUpdatesURL={#MyAppURL}
  18. DefaultDirName=C:\Games\Starfield.Digital.Premium.Edition-InsaneRamZes\Data
  19. ArchitecturesAllowed=x64compatible
  20. ArchitecturesInstallIn64BitMode=x64compatible
  21. DefaultGroupName={#MyAppName}
  22. DisableProgramGroupPage=yes
  23. InfoBeforeFile=D:\media\!Downloads\Deimog v1.0.69\Description_eng.txt
  24. PrivilegesRequiredOverridesAllowed=dialog
  25. OutputDir=D:\media\!Downloads\Deimog v1.0.69
  26. OutputBaseFilename=DeimogVehicle
  27. Compression=lzma
  28. SolidCompression=yes
  29. WizardStyle=modern
  30. LanguageDetectionMethod=UILanguage
  31. LicenseFile=D:\media\!Downloads\Deimog v1.0.69\mit_eng.txt
  32.  
  33. [Languages]
  34. Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
  35. Name: "english"; MessagesFile: "compiler:Default.isl"
  36.  
  37.  
  38. [CustomMessages]
  39. russian.DescriptionFile=Описание на русском.
  40. russian.LicenseFile=Лицензия на русском.
  41. english.DescriptionFile=Описание на английском.
  42. english.LicenseFile=Лицензия на английском.
  43.  
  44. [Files]
  45. Source: "D:\media\!Downloads\Deimog v1.0.69\Deimog v1.0.69\sfbgs019 - main.ba2"; DestDir: "{app}"; Flags: ignoreversion
  46. Source: "D:\media\!Downloads\Deimog v1.0.69\Deimog v1.0.69\sfbgs019 - textures.ba2"; DestDir: "{app}"; Flags: ignoreversion
  47. Source: "D:\media\!Downloads\Deimog v1.0.69\Deimog v1.0.69\sfbgs019.esm"; DestDir: "{app}"; Flags: ignoreversion
  48.  
  49. [Icons]
  50. Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
  51. Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
  52.  
  53. [Code]
  54. var
  55.   LicenseFile: String;
  56.   InfoBeforeFile: String;
  57.   TargetFolder: string;
  58.   TargetFile: string;
  59.   PluginEntry: string;
  60.  
  61.  //Проверяем наличие каталога и создаём, если нет
  62. procedure EnsureDirectoryExists(Dir: string);
  63. begin
  64.   if not DirExists(Dir) then
  65.   begin
  66.     if not CreateDir(Dir) then
  67.       MsgBox('Ошибка: не удалось создать каталог: ' + Dir, mbError, MB_OK);
  68.   end;
  69. end;
  70.  
  71.  //Проверяем наличие файла и создаём, если нет
  72. procedure EnsureFileExists(FileName: string);
  73. var
  74.   FileList: TStringList;
  75. begin
  76.   if not FileExists(FileName) then
  77.   begin
  78.     FileList := TStringList.Create;
  79.     try
  80.       FileList.SaveToFile(FileName);
  81.     finally
  82.       FileList.Free;
  83.     end;
  84.   end;
  85. end;
  86.  
  87.  
  88. //Считываем содержимое файла и добавляем необходимую строку
  89. procedure AddPluginEntry;
  90. var
  91.   FileList: TStringList;
  92.   LineExists: Boolean;
  93.   i: Integer;
  94. begin
  95.   EnsureDirectoryExists(TargetFolder);
  96.   EnsureFileExists(TargetFile);
  97.  
  98.   FileList := TStringList.Create;
  99.   try
  100.   //Загружаем и ищем
  101.     FileList.LoadFromFile(TargetFile);
  102.     LineExists := False;
  103.     for i := 0 to FileList.Count - 1 do
  104.     begin
  105.       if CompareText(FileList[i], PluginEntry) = 0 then
  106.       begin
  107.         LineExists := True;
  108.         Break;
  109.       end;
  110.     end;
  111.  //Если строки нет, то добавляем
  112.     if not LineExists then
  113.     begin
  114.       FileList.Add(PluginEntry);
  115.       FileList.SaveToFile(TargetFile);
  116.     end;
  117.   finally
  118.     FileList.Free;
  119.   end;
  120. end;
  121.  
  122. //При удалении мода удаляем добавленную строку
  123. procedure RemovePluginEntry;
  124. var
  125.   FileList: TStringList;
  126.   i: Integer;
  127. begin
  128.   if not FileExists(TargetFile) then
  129.     Exit;
  130.  
  131.   FileList := TStringList.Create;
  132.   try
  133.     FileList.LoadFromFile(TargetFile);
  134.     for i := FileList.Count - 1 downto 0 do
  135.     begin
  136.       if CompareText(FileList[i], PluginEntry) = 0 then
  137.         FileList.Delete(i);
  138.     end;
  139.     FileList.SaveToFile(TargetFile);
  140.   finally
  141.     FileList.Free;
  142.   end;
  143. end;
  144.  
  145. //При установке проверяем наличие файла и каталога, в файле ищем строку, добавляем, если нет
  146. function InitializeSetup: Boolean;
  147. begin
  148.   TargetFolder := ExpandConstant('{localappdata}\starfield');
  149.   TargetFile := TargetFolder + '\plugins.txt';
  150.   PluginEntry := '*sfbgs019.esm';
  151.  
  152.   AddPluginEntry;
  153.   Result := True;
  154. end;
  155.  
  156. //При удалении отменяем внесённые изменения (кроме создания файла)
  157. procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
  158. begin
  159.   if CurUninstallStep = usPostUninstall then
  160.   begin
  161.     TargetFolder := ExpandConstant('{localappdata}\starfield');
  162.     TargetFile := TargetFolder + '\plugins.txt';
  163.     PluginEntry := '*sfbgs019.esm';
  164.  
  165.     RemovePluginEntry;
  166.   end;
  167. end;
  168.  
  169. //Поддержка русского и английского лицензий/описаний
  170. procedure InitializeWizard;
  171. begin  
  172.   if ActiveLanguage = 'russian' then
  173.   begin
  174.     LicenseFile := ExpandConstant('D:\media\!Downloads\Deimog v1.0.69\mit_rus.txt');
  175.     InfoBeforeFile := ExpandConstant('D:\media\!Downloads\Deimog v1.0.69\Description_rus.txt');
  176.   end
  177.   else
  178.   begin
  179.     LicenseFile := ExpandConstant('D:\media\!Downloads\Deimog v1.0.69\mit_eng.txt');
  180.     InfoBeforeFile := ExpandConstant('D:\media\!Downloads\Deimog v1.0.69\Description_eng.txt');
  181.   end;
  182.  
  183.   WizardForm.LicenseMemo.Lines.LoadFromFile(LicenseFile);
  184.   WizardForm.InfoBeforeMemo.Lines.LoadFromFile(InfoBeforeFile);
  185. end;
  186.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement