Jump to content
Korean Random
EvilAlex

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

Recommended Posts

Картинка у тебя в формате *.bmp?

конешно, и названия картинок спецом поменял на   1.bmp  и т.д

чтоб не накасячить

Edited by -zav-

Share this post


Link to post

Short link
Share on other sites

А ты через редактор расширение менял или переименовал ?

Изначально, когда прикручивал скрипт и проверял картинки стояли 1680х1050.

Share this post


Link to post

Short link
Share on other sites

конешно, и названия картинок спецом поменял на   1.bmp  и т.д

чтоб не накасячить

 Вобщем, проблема в картинках..

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

 

А ты через редактор расширение менял или переименовал ?

Так вот где собака порылась...
Еще раз спасибо, теперь работает.

Share this post


Link to post

Short link
Share on other sites

Вот еще нашел код для создания резервной копии перед установкой (например папки res_mods), но увы не знаю как его грамотно прикрепить.

post-8756-0-63708600-1391388521_thumb.jpg

В идеале хотелось бы два чекбокса (на резервное копирование и/или удаление папки).
а к резервным копим прибавлять дату (если установка проводится несколько раз)

типа такого


var
ArcDir: String;

procedure CreateBackup();
var
SrcFile, DestFile: string;
begin
ArcDir:= AddBackslash(ExpandConstant('{app}\Backup')) +
GetDateTimeString('yyyy/mm/dd hh:nn', '_', '.' );
ForceDirectories(ArcDir);
SrcFile:= AddBackslash(ExpandConstant('{app}')) + ExtractFileName(CurrentFileName);
DestFile:= AddBackslash(ArcDir) + ExtractFileName(CurrentFileName);
FileCopy(SrcFile, DestFile, False);
end;

Backup.zip

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

Тут вопрос возник..

Какой флаг нужно ставить на компонент, чтобы он был неизменяемым, но в то же время отмечен..?

Вроде так

[Types]

Name: "polnaya"; Description: "Полная установка"

Name: "viborochnaya"; Description: "Выборочная установка"; Flags: iscustom

 

[Components]

Name: KMP; Description:Mod Pack; Types: polnaya; Flags: fixed

Share this post


Link to post

Short link
Share on other sites

@-zav-, аа, я въехал. Спасибо. разобрался.. у меня просто Flags: fixed было закомментировано, вот и не понимал. в чём прикол)

 

UPD:
Ещё вопрос.. как я понял, вот такое:

Source: "{app}\res\audio\*"; DestDir: "res_mods\0.8.10\audio\"; Flags: external recursesubdirs skipifsourcedoesntexist; Components: KMP\O;
 Source: "MODS\OZVUCHKA\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\O;

копирует всё из папки res в res_mods, вместе с тем, что у меня в папке "OZVUCHKA", правильно?

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

 

 

копирует всё из папки res в res_mods, вместе с тем, что у меня в папке "OZVUCHKA", правильно?

Да.

А точнее сперва копирует из  \res\audio\   в   res_mods\0.8.10\audio\       А потом из MODS\OZVUCHKA\

Share this post


Link to post

Short link
Share on other sites

Да.

А точнее сперва копирует из  \res\audio\   в   res_mods\0.8.10\audio\       А потом из MODS\OZVUCHKA\

 Ну, да, я так и думал... но вот в чём загвоздка:

'кусок скрипта'

[Setup]
DefaultDirName={code:MyDirName}

[code]
function MyDirName(S:String): String;
var
  InsPath: String;
  er: boolean;
  myFile:String;
begin
  Result:=ExpandConstant('C:\Games\World_of_Tanks\'); //если ключа нет то будем ставить сюда
  er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', InsPath);
  if er and (InsPath<>'') then //если ключ существует и там что-то записано
  begin
    Result := InsPath;
  end;
end;

[Components]
Name: KMP\O; Description: Расширенная озвучка + звонок при крите модуля. С озвучиванием повреждённых модулей противника.; 

[Files]
Source: "{app}\res\audio\*"; DestDir: "res_mods\0.8.10\audio\"; Flags: external recursesubdirs skipifsourcedoesntexist; Components: KMP\O;
 Source: "MODS\OZVUCHKA\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\O;

Сколько раз не пытался установить в разную иерархию - ничего не делает..

Может что-то не дописано.. ?

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

 

 

Сколько раз не пытался установить в разную иерархию - ничего не делает..

да не надо в разные сувать, есть же уже готовый файл  Components.iss, там уже есть всё что нужно.  (строки на звоночек крита) подправь под свои нужды и всё

Share this post


Link to post

Short link
Share on other sites

да не надо в разные сувать, есть же уже готовый файл  Components.iss, там уже есть всё что нужно.  (строки на звоночек крита) подправь под свои нужды и всё

 Ну, так всё и оставил.. ничего не изменилось. В начале установки (в строке, где перечисляются распаковывающиеся файлы) пробегают все нужные файлы из папки res\audio.. но строка выглядит так: c:windows\system32\и т.д... Но указываю я d:\games (в этой папке лежит папка с игрой).

Share this post


Link to post

Short link
Share on other sites

 

 

function MyDirName(S:String): String; var InsPath: String; er: boolean; myFile:String; begin Result:=ExpandConstant('C:\Games\World_of_Tanks\'); //если ключа нет то будем ставить сюда er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', InsPath); if er and (InsPath<>'') then //если ключ существует и там что-то записано begin Result := InsPath; end; end;

ужас, куда всё проще можно сделать

[Setup]
DefaultDirName={code:GetInstallDir}

[Code]
Function GetInstallDir(Path: String ): String;
begin
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1', 'InstallLocation', Path);//Eaeie ee?? ?aano?a euao ...
Result := Path;
end;

ну и в InitializeSetup

если реестре не найдено, то выводим MsgBox, что игра не найдена укажите в ручную

Share this post


Link to post

Short link
Share on other sites
если реестре не найдено, то выводим MsgBox, что игра не найдена укажите в ручную

действительно, с твоим вариантом удобнее, вписал его..

 

Но проблема остаётся... первые пару секунд все нужные файлы утекают в c:\windows\system32\res_mods\0.8.10\audio, а потом всё, что выбирал для установки идёт в нужную папку. (кстати, после установки, в system32 всё в порядке..)

 

 UPD: проблему решил:

Source: "{app}\res\audio\*"; DestDir: "{app}\res_mods\0.8.10\audio\"; Flags: external recursesubdirs skipifsourcedoesntexist; Components: KMP\O;

В DestDir добавил {app}\

Теперь всё, что нужно, откуда нужно копирует куда нужно :) (от такая тавтология)

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites
Source: "{app}\res\audio\*"; DestDir: "{app}\res_mods\0.8.10\audio\"; Flags: external recursesubdirs skipifsourcedoesntexist; Components: KMP\O;

Блин... ребят... Вам своего времени не жалко? К каждому патчу меняете 0.8.10, на 0.8.11 и так далее?

 

Самой первой строчкой напишите:

#define Patch "0.8.10"

и тогда эта строчку будет выглядеть так:

Source: "{app}\res\audio\*"; DestDir: "{app}\res_mods\{#Patch}\audio\"; Flags: external recursesubdirs skipifsourcedoesntexist; Components: KMP\O;

Уважайте свое время.

  • Downvote 2

Share this post


Link to post

Short link
Share on other sites

Всем привет! Итак я скачал файлы, "Сам скрипт + пара модов для теста:
ScriptModPack.​rar 54,3 МБ

Программа с помощью которой собирается инсталлятор:
InnoUltra.exe 54 МБ
"

 

Установил программу, разархивировал архив, на рабочем столе появился ярлык "Inno Setup Compiler" я его открыл, открылась программа, я беру из папки "ScriptModPack" и открываю файл "script" вроде все нормально. Но когда я компилирую данный скрипт то никакого выбора модов у меня не появляется, и собственно никакие "тестовые" моды никуда не устанавливаются. Поясните что я делаю не так? :)

Share this post


Link to post

Short link
Share on other sites

В самом скрипте закомментированы некоторые строки (так по дефолту).
Выглядят так:

;#include "Components.iss"                                         
#include "Messages.iss"

это пример... видишь, в начале строки Компонентов стоит ";"..(В InnoSetup эта строка должна выделяться зелёным цветом), убери точку с запятой и перекомпилируй снова, всё будет норм :)

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Ну что? Ни у кого никаких идей нет больше?

Для тех у кого инсталер только на русском, отключаем окошко с выбором языка.

[setup]
ShowLanguageDialog=no

 

[Languages]
;Name: eng; MessagesFile: compiler:Default.isl
Name: rus; MessagesFile: compiler:Languages\Russian.isl
 

Share this post


Link to post

Short link
Share on other sites

теперь олени будут делать модпаки. и запихивать туда вирусню и прочую [мат].

 

жирный минус.

  • Downvote 9

Share this post


Link to post

Short link
Share on other sites
теперь олени будут делать модпаки. и запихивать туда вирусню и прочую [мат].

Всегда и постоянно проверяйте антивирусом ЛЮБОЙ скачанный файл или архив.

это азы безопасности, просто мы ленимся.

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.

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.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...