Jump to content
Korean Random
EvilAlex

Создание инсталляторов для модпаков на базе Inno Setup

Recommended Posts

Доброго времени суток !

Видел пару раз темы, где люди искали программу или скрипт которые бы собирали моды в одну прогу и после этого могли их устанавливать на выбор !

Нашел на форумах одну вещицу так скажем!

 

Сам скрипт + пара модов для теста:

ScriptModPack.​rar 54,3 МБ

 

Программа с помощью которой собирается инсталлятор:

InnoUltra.exe 54 МБ

 

Скриншоты:

 

Что нового:

Ver. 2.4.124

- Упростил скрипт.

- добавил определения папки установки если игра была установлена, если же скопирована инсталятор предлагает свой путь.

- обновил Сообщения в инстоляторе.

- внешний вид не менял.

- добавил Лицензию и ФАК.

 

Ver. 2.3

- Добавил в скрипт небольшое описание.

- Добавил скрипт с Сообщениями иснтоллятора и выбор языка.

- Вынес в отдельный скрипт компоненты - моды.

- Внутри есть 2psd

- Вместо ссылки на группу Кран'а теперь логотип нашего форума с сыллкой на негоже)

 

Русская справка к версии 5.5.1, автор перевода BagIra, bugron

attachicon.gifISetup.rar

 

"Дополнительные скрипты "

Проверка папки установки:
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then
begin
MsgBox('Не верно указана папка World of Tanks!', mbError, MB_OK);
Result := False;
end;
end;
end;
Набор скриптов, библиотек с их использованием (Автор: Kotyarko_O):

Набор скриптов, библиот…нием.rar - 31,12 МБ

 

А программа только для WOT? Или подойдет для др игр?

Share this post


Link to post

Short link
Share on other sites

 

 

подойдет для др игр?
Конечно. 90% (ну или где-то столько же) репаков и оригинальных установщиков для всяких программ или игр сделаны на InnoSetup.
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Конечно. 90% (ну или где-то столько же) репаков и оригинальных установщиков для всяких программ или игр сделаны на InnoSetup.

Спс)

Share this post


Link to post

Short link
Share on other sites

большое спасибо буду ждать

Всем привет что я только неперепробовал ( менял кодирунг, менял программы, и так  далее) но проблема всё ещё таже не могу удалить папку res_mods или всё из неё, кто поможет буду признателен :flag:

Edited by lexx7205

Share this post


Link to post

Short link
Share on other sites

Всем привет что я только неперепробовал ( менял кодирунг, менял программы, и так далее) но проблема всё ещё таже не могу удалить папку res_mods или всё из неё, кто поможет буду признателен :flag:

ну ты может выше посмотришь, я тебе ссылку дал

http://www.koreanrandom.com/forum/topic/9050-%D0%B8%D0%BD%D1%81%D1%82%D0%B0%D0%BB%D0%BB%D1%8F%D1%82%D0%BE%D1%80-%D0%B4%D0%BB%D1%8F-%D0%BC%D0%BE%D0%B4%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2/?p=277269

Edited by Dark_Knight_MiX

Share this post


Link to post

Short link
Share on other sites

да уже всё перепробовал не чего не получается скоро начну психовать или я настолько тупой??????
может кто-нибудь скинет рабочий пример чтобы удалял папку res_mods  очень сильно прошу :hmm:

Share this post


Link to post

Short link
Share on other sites

да уже всё перепробовал не чего не получается скоро начну психовать или я настолько тупой??????

может кто-нибудь скинет рабочий пример чтобы удалял папку res_mods  очень сильно прошу :hmm:

Все в теме есть! Даже готовые скрипты... Воспользуйтесь поиском по теме, а ещё лучше почитайте всю тему.

Share this post


Link to post

Short link
Share on other sites

да я уже все прочитал и видео посмотрел только инсталлятор не хочет убирать папку, а только добавляет туда файлы, вот можете посмотреть скрип и инсталлятор https://cloud.mail.ru/public/rBYP/gCtFpAvN4 может кто и скажет в чем тут дело :exc:


зачем, лень же :ok:

да зачем же так я уже сижу над этой темой три дня и не как не получается просто бошку уже срывает

test.txt

Share this post


Link to post

Short link
Share on other sites

да я уже все прочитал и видео посмотрел только инсталлятор не хочет убирать папку, а только добавляет туда файлы, вот можете посмотреть скрип и инсталлятор https://cloud.mail.ru/public/rBYP/gCtFpAvN4 может кто и скажет в чем тут дело :exc:

 

да зачем же так я уже сижу над этой темой три дня и не как не получается просто бошку уже срывает

ты скачал тот файл на который я дал ссылку?

Share this post


Link to post

Short link
Share on other sites

да и всё равно не чего не получается потом поменял программу с  юникоде на анси перешёл и все одно и тоже

Share this post


Link to post

Short link
Share on other sites

да и всё равно не чего не получается потом поменял программу с юникоде на анси перешёл и все одно и тоже

скинь все исходники

Share this post


Link to post

Short link
Share on other sites
test.txt

Заархивировать скрипт слабо?

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

@lexx7205

; Скрипт создан через Мастер Inno Setup Script.
; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP!
; Внимание!!! Это всего лишь пример скрипта BackUp.

#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define Patch   "0.9.10"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"
#include "SHFileOperation.iss";




[Setup]
WizardImageFile=C:\Users\lexx\Desktop\даты для InnoUltra\186 VN.bmp
; Примечание: Значение AppId идентифицирует это приложение.
; Не используйте одно и тоже значение в разных установках.
; (Для генерации значения GUID, нажмите Инструменты | Генерация GUID.)
AppId={{3710FA1E-955E-4E83-9887-8FB48AAE2954}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={code:WotDirNameRU}
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
LicenseFile=C:\Users\lexx\Desktop\даты для InnoUltra\licensia.txt
InfoBeforeFile=C:\Users\lexx\Desktop\даты для InnoUltra\faq.rtf
OutputDir=C:\Users\lexx\Desktop\сборка лекс
OutputBaseFilename=сборка test
SetupIconFile=C:\Users\lexx\Desktop\даты для InnoUltra\wot_ico.ico
Compression=lzma
SolidCompression=yes
DirExistsWarning=no
AppendDefaultDirName=no

[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\lexx\Desktop\сборка лекс\XVM\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; Components: KMP\1   ;



; Примечание: Не используйте "Flags: ignoreversion" для системных файлов

[Components]
Name: KMP; Description: lexx; Types: custom; Flags: exclusive
Name: KMP\1; Description: XVM.;

; Примечание: Не используйте "Flags: ignoreversion" для системных файлов

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

[Code]
function WotDirNameRU(Path: String): String; 
begin
 if RegKeyExists(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
 begin
  RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', Path);
  Result := Path
 end else
 if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
 begin
  RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', Path);
  Result := Path
 end else
 if RegKeyExists(HKCU, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
 begin
  RegQueryStringValue(HKCU, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', Path);
  Result := Path
 end else
 if RegKeyExists(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
 begin
  RegQueryStringValue(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', Path);
  Result := Path
 end else
  Result := ExpandConstant('C:\Games\World_of_Tanks');
end;
{ RedesignWizardFormBegin } // Не удалять эту строку!
// Не изменять эту секцию. Она создана автоматически.
procedure RedesignWizardForm;
begin
  with WizardForm.WizardBitmapImage do
  begin
    Width := ScaleX(500);
  end;

  with WizardForm.WelcomeLabel2 do
  begin
    Left := ScaleX(496);
    Top := ScaleY(311);
    Width := ScaleX(77);
    Height := ScaleY(215);
  end;

  with WizardForm.WelcomeLabel1 do
  begin
    Left := ScaleX(488);
    Top := ScaleY(330);
    Width := ScaleX(53);
    Height := ScaleY(1);
  end;

  with WizardForm.WizardBitmapImage2 do
  begin
    Width := ScaleX(516);
  end;

  with WizardForm.RunList do
  begin
    Left := ScaleX(509);
    Top := ScaleY(314);
    Width := ScaleX(27);
    Height := ScaleY(1);
  end;

  with WizardForm.NoRadio do
  begin
    Left := ScaleX(557);
    Top := ScaleY(314);
    Width := ScaleX(27);
    Height := ScaleY(33);
  end;

  with WizardForm.YesRadio do
  begin
    Left := ScaleX(515);
    Top := ScaleY(314);
    Width := ScaleX(69);
    Height := ScaleY(14);
  end;

  with WizardForm.FinishedLabel do
  begin
    Left := ScaleX(525);
    Top := ScaleY(323);
    Width := ScaleX(35);
    Height := ScaleY(4);
  end;

  with WizardForm.FinishedHeadingLabel do
  begin
    Left := ScaleX(499);
    Top := ScaleY(314);
    Width := ScaleX(61);
    Height := ScaleY(17);
  end;

{ ReservationBegin }
  // Вы можете добавить ваш код здесь.

{ ReservationEnd }
end;
// Не изменять эту секцию. Она создана автоматически.
{ RedesignWizardFormEnd } // Не удалять эту строку!

//---Сюда вставлять скрипт---\\
var
  BackupPage: TWizardPage;
  DeleteRadioButton, MoveRadioButton, NoneRadioButton: TNewRadioButton;

const
  BackupDescText =
    'Во избежание проблем совместимости и конфликтов между модификациями рекомендуется удалить уже установленные на данный момент в игровом клиенте.' #13#13 'Выберите необходимый пункт из представленных. При этом будет очищено содержимое папки "res_mods\0.9.10", удалена папка "res_mods\xvm" или созданы резервные копии Ваших файлов.';
  DeleteDescText =
    'Установщик удалит все файлы в папках.';
  MoveDescText =
    'Установщик сделает резервную копию всех файлов в папках.';
  NoneDescText =
    'Установщик оставит всё как есть.';

function BackupCheck_1(): Boolean;
var
  BackupDescLabel, DeleteDescLabel, MoveDescLabel, NoneDescLabel: TLabel;
begin
  BackupPage:=CreateCustomPage(wpWelcome, 'Создание резервных копий файлов перед установкой', 'Пожалуйста, прочтите следующую важную информацию перед тем, как продолжить.');
  BackupDescLabel:=TLabel.Create(WizardForm);
  BackupDescLabel.Parent:=BackupPage.Surface;
  BackupDescLabel.Left:=0;
  BackupDescLabel.Top:=0;
  BackupDescLabel.Width:=BackupPage.SurfaceWidth;
  BackupDescLabel.Height:=90;
  BackupDescLabel.AutoSize:=False;
  BackupDescLabel.Wordwrap:=True;
  BackupDescLabel.Caption:=BackupDescText;

  DeleteRadioButton:=TNewRadioButton.Create(WizardForm);
  DeleteRadioButton.Parent:=BackupPage.Surface;
  DeleteRadioButton.Checked:=False;
  DeleteRadioButton.Top:=95;
  DeleteRadioButton.Width:=BackupPage.SurfaceWidth;
  DeleteRadioButton.Font.Style:=[fsBold];
  DeleteRadioButton.Font.Size:=9;
  DeleteRadioButton.Caption:='Удалить файлы'
  DeleteDescLabel:=TLabel.Create(WizardForm);
  DeleteDescLabel.Parent:=BackupPage.Surface;
  DeleteDescLabel.Left:=18;
  DeleteDescLabel.Top:=DeleteRadioButton.Top + DeleteRadioButton.Height + 4;
  DeleteDescLabel.Width:=BackupPage.SurfaceWidth;
  DeleteDescLabel.Height:=40;
  DeleteDescLabel.AutoSize:=False;
  DeleteDescLabel.Wordwrap:=True;
  DeleteDescLabel.Caption:=DeleteDescText;

  MoveRadioButton:=TNewRadioButton.Create(WizardForm);
  MoveRadioButton.Parent:=BackupPage.Surface;
  MoveRadioButton.Checked:=True;
  MoveRadioButton.Top:=140;
  MoveRadioButton.Width:=BackupPage.SurfaceWidth;
  MoveRadioButton.Font.Style:=[fsBold];
  MoveRadioButton.Font.Size:=9;
  MoveRadioButton.Caption:='Сделать резервную копию файлов'
  MoveDescLabel:=TLabel.Create(WizardForm);
  MoveDescLabel.Parent:=BackupPage.Surface;
  MoveDescLabel.Left:=18;
  MoveDescLabel.Top:=MoveRadioButton.Top + MoveRadioButton.Height + 4;
  MoveDescLabel.Width:=BackupPage.SurfaceWidth;
  MoveDescLabel.Height:=40;
  MoveDescLabel.AutoSize:=False;
  MoveDescLabel.Wordwrap:=True;
  MoveDescLabel.Caption:=MoveDescText;

  NoneRadioButton:=TNewRadioButton.Create(WizardForm);
  NoneRadioButton.Parent:=BackupPage.Surface;
  NoneRadioButton.Checked:=False;
  NoneRadioButton.Top:=185;
  NoneRadioButton.Width:=BackupPage.SurfaceWidth;
  NoneRadioButton.Font.Style:=[fsBold];
  NoneRadioButton.Font.Size:=9;
  NoneRadioButton.Caption:='Ничего не трогать'
  NoneDescLabel:=TLabel.Create(WizardForm);
  NoneDescLabel.Parent:=BackupPage.Surface;
  NoneDescLabel.Left:=18;
  NoneDescLabel.Top:=NoneRadioButton.Top + NoneRadioButton.Height + 4;
  NoneDescLabel.Width:=BackupPage.SurfaceWidth;
  NoneDescLabel.Height:=40;
  NoneDescLabel.AutoSize:=False;
  NoneDescLabel.Wordwrap:=True;
  NoneDescLabel.Caption:=NoneDescText;
end;

function BackupCheck_2(): Boolean;
begin
  If DeleteRadioButton.Checked then
begin
  DelTree(ExpandConstant('{app}\res_mods\{#Patch}'), True, True, True);
  DelTree(ExpandConstant('{app}\res_mods\xvm'), True, True, True);
  CreateDir(ExpandConstant('{app}\res_mods\{#Patch}'));
end;
end;

function BackupCheck_3(): Boolean;
begin
  If MoveRadioButton.Checked then
begin
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\'),ExpandConstant('{app}\res_mods\backup\{#Patch}'));
  MoveDir(ExpandConstant('{app}\res_mods\xvm\'),ExpandConstant('{app}\res_mods\backup\xvm'));
  CreateDir(ExpandConstant('{app}\res_mods\{#Patch}'));
  DelTree(ExpandConstant('{app}\res_mods\xvm'), True, True, True);
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  If CurStep=ssInstall then
begin
  BackupCheck_2();
  BackupCheck_3();
end;
end;

procedure InitializeWizard();
begin
  RedesignWizardForm;
  BackupCheck_1();
end;

[ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D003010D906000054504630F10B5457697A617264466F726D0A57697A617264466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C65667402000B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038E010D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D65506167650D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100F10C544269746D6170496D6167651157697A6172644269746D6170496D61676505576964746803F4010D4578706C69636974576964746803F4010000F10E544E6577537461746963546578740D57656C636F6D654C6162656C32044C65667403F00103546F70033701055769647468024D0648656967687403D7000C4578706C696369744C65667403F0010B4578706C69636974546F700337010D4578706C696369745769647468024D0E4578706C6963697448656967687403D7000000F10E544E6577537461746963546578740D57656C636F6D654C6162656C31044C65667403E80103546F70034A0105576964746802350648656967687402010C4578706C696369744C65667403E8010B4578706C69636974546F70034A010D4578706C69636974576964746802350E4578706C696369744865696768740201000000F110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650D53656C656374446972506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6F6B506167651453656C656374436F6D706F6E656E7473506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED0000F10C544E6577436F6D626F426F780A5479706573436F6D626F0A4974656D486569676874020D000000F110544E65774E6F7465626F6F6B506167650F53656C6563745461736B73506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6F6B506167650E496E7374616C6C696E67506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED0000000000F110544E65774E6F7465626F6F6B506167650C46696E6973686564506167650D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100F10C544269746D6170496D6167651257697A6172644269746D6170496D616765320557696474680304020D4578706C6963697457696474680304020000F110544E6577436865636B4C697374426F780752756E4C697374044C65667403FD0103546F70033A01055769647468021B0648656967687402010C4578706C696369744C65667403FD010B4578706C69636974546F70033A010D4578706C696369745769647468021B0E4578706C6963697448656967687402010000F10F544E6577526164696F427574746F6E074E6F526164696F044C656674032D0203546F70033A01055769647468021B0648656967687402210C4578706C696369744C656674032D020B4578706C69636974546F70033A010D4578706C696369745769647468021B0E4578706C6963697448656967687402210000F10F544E6577526164696F427574746F6E08596573526164696F044C65667403030203546F70033A01055769647468024506486569676874020E0C4578706C696369744C6566740303020B4578706C69636974546F70033A010D4578706C69636974576964746802450E4578706C69636974486569676874020E0000F10E544E6577537461746963546578740D46696E69736865644C6162656C044C656674030D0203546F7003430105576964746802230648656967687402040C4578706C696369744C656674030D020B4578706C69636974546F700343010D4578706C69636974576964746802230E4578706C6963697448656967687402040000F10E544E6577537461746963546578741446696E697368656448656164696E674C6162656C044C65667403F30103546F70033A01055769647468023D0648656967687402110C4578706C696369744C65667403F3010B4578706C69636974546F70033A010D4578706C696369745769647468023D0E4578706C6963697448656967687402110000000000






  Edited by Dark_Knight_MiX

Share this post


Link to post

Short link
Share on other sites
можете сказать, в чём была причина

Сравнивайте код, который привели вы, с кодом, который привёл , и узнаете сами.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

спасибо всё работает селе можете сказать, в чём была причина :gawi:

не надо было делать путь установки таким

DefaultDirName=C:\Games\World_of_Tanks\res_mods

:heh:  где ты такой пример нарыл? в шапке такого нет даже

и как же ты читаешь тему? на первых 10 стр про путь расписывали

Edited by Dark_Knight_MiX

Share this post


Link to post

Short link
Share on other sites

всем доброго дня у меня происходит ошибка приселение двух кодов кто ничуть может подсказать, где ошибка

post-34125-0-94664300-1446888252_thumb.png

сборка test 7.11.rar

Edited by lexx7205

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...