Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: vint56
Дата сообщения: 30.05.2014 12:43
Habib2302
Пример от стандартного Исдона
[more]procedure CancelButtonOnClick(Sender: TObject);
begin
SuspendProc;
if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then ISDoneCancel:=1;
ResumeProc;
end;

procedure HideControls;
begin
MyCancelButton.Hide;
end;

procedure CreateControls;
var PBTop:integer;
begin
MyCancelButton:=TButton.Create(WizardForm);
with MyCancelButton do begin
Parent:=WizardForm;
Width:=ScaleX(135);
Caption:=ExpandConstant('{cm:CancelButton}');
Left:=ScaleX(360);
Top:=WizardForm.cancelbutton.top;
OnClick:=@CancelButtonOnClick;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then begin //Если необходимо, можно поменять на ssPostInstall
CreateControls;

Либо переключить на стандартную кнопку
procedure HideControls;
begin
// MyCancelButton.Hide;

procedure CreateControls;
// MyCancelButton:=TButton.Create(WizardForm);
// with MyCancelButton do begin
// Parent:=WizardForm;
// Width:=ScaleX(135);
// Caption:=ExpandConstant('{cm:CancelButton}');
// Left:=ScaleX(360);
// Top:=WizardForm.cancelbutton.top;
// OnClick:=@CancelButtonOnClick;
// end;

procedure CurStepChanged(CurStep: TSetupStep);
if CurStep = ssPostInstall then begin
WizardForm.CancelButton.OnClick:=@CancelButtonOnClick;
// WizardForm.CancelButton.Hide;
WizardForm.CancelButton.Enabled:= True; // если ssPostInstall потому как кнопка не активна [/more]
Автор: Habib2302
Дата сообщения: 30.05.2014 13:15
vint56
спасибо
Автор: LTJBukem
Дата сообщения: 31.05.2014 16:49
Нужна ваша помощь. Давно мучаюсь с одной задачей.

[CODE]
function MyRegReadString (Default: String): String;
begin
Default:='C:\Program Files\MagSys\WT 2.64\';
Result := Default;
if RegQueryStringValue(HKCU, 'Software\MagSys\WinTecs\2.5\DBConfig\DILER', 'WM_Private', Default) then Result := Default;
end;

Вопрос 1. По данному коду определяется путь установки из реестра. Он подхватывается в виде "C:\PROGRAM FILES\MAGSYS\WT 2.64\BIN\PRIVATE", но мне он нужен в таком виде "C:\PROGRAM FILES\MAGSYS\WT 2.64\". Т.е. нужно удалить "BIN\PRIVATE". Как?

Вопрос 2. Если ключ в реестре отсутствует, то он берёт путь по умолчанию "C:\Program Files\MagSys\WT 2.64\". Как правильно прописать путь на Program Files без привязки к диску? Команды %ProgramFiles% или {pf} не работают в коде.
Автор: sergey3695
Дата сообщения: 31.05.2014 21:44
LTJBukem
вопрос 1 и 2.

Код: [Setup]
DefaultDirName={code:GetInstallDir|{pf}\MagSys\WT 2.64}
//...
function GetInstallDir(S: String): String;
var
a: string;
begin
if RegQueryStringValue(HKCU, 'Software\MagSys\WinTecs\2.5\DBConfig\DILER', 'WM_Private', S) then
begin
a:='BIN\PRIVATE';
Delete(S,pos(a,S),Length(a));
Result:= S;
end else
Result:= ExpandConstant(S);
end;
Автор: useretail
Дата сообщения: 01.06.2014 16:17
<offtopic>
Как можно распаковать InnoSetup с данными пожатыми FreeArc-ом? Не очень хочется запускать инсталлятор который зачем-то требует админ-привилегий и как минимум гадит в пуск, реестр и тп. 95% случаев всё прекрасно работаeт без каких либо записей в реестре, для оставшихся 5% можно почитать скрипт и вручную добавить то что нужно
innounp данные не распаковывает, только скрипт установки и то что в setup.exe/.bin

В некоторых случаях архивы еще и зашифрованы, пароль видимо тоже зашит в инсталляторе, как его извлечь?
</offtopic>
Автор: LTJBukem
Дата сообщения: 02.06.2014 11:39

Цитата:
LTJBukem
вопрос 1 и 2.  

Код:
[Setup]
DefaultDirName={code:GetInstallDir|{pf}\MagSys\WT 2.64}
//...
function GetInstallDir(S: String): String;
var
  a: string;
begin
if RegQueryStringValue(HKCU, 'Software\MagSys\WinTecs\2.5\DBConfig\DILER', 'WM_Private', S) then
begin
  a:='BIN\PRIVATE';
  Delete(S,pos(a,S),Length(a));
  Result:= S;
end else
  Result:= ExpandConstant(S);
end;
 

не компилил. но вроде норм.

Всё работает так, как я себе и представлял! Доволен как ребёнок, уж больно долго этот вопрос меня беспокоил. Благодарю!
Автор: tyumenik
Дата сообщения: 03.06.2014 08:47
Доброго времени! Не мог разобрался 2 скипты... Заранее спасибо!

[more=О программе]
function AppendMenu(hMenu: HMENU; uFlags, uIDNewItem: UINT; lpNewItem: PChar): BOOL;
external 'AppendMenuA@user32.dll stdcall';
function GetSystemMenu(hWnd: HWND; bRevert: BOOL): HMENU; external 'GetSystemMenu@user32.dll stdcall';

const
WM_SYSCOMMAND = $0112;
MF_DELETE = $200;
MF_SEPARATOR = $800;
MF_BYPOSITION = $400;

var
Menu: TMenuItem;

procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_SYSCOMMAND then
if Msg.wParam = Menu.Handle then
MsgBox('Здесь могла бы быть ваша реклама... ', mbInformation, MB_OK);;
end;

procedure InitializeWizard();
begin
// попытаемя удалить родное меню 'О программе'
if not AppendMenu(GetSystemMenu(Wizardform.Handle, True), MF_DELETE, 0, SetupMessage(msgAboutSetupMenuItem)) then
// создаём сепаратор
AppendMenu(GetSystemMenu(Wizardform.Handle, False), MF_SEPARATOR, 0, '');
Menu:= TMenuItem.Create(WizardForm); // создаём ссылку на менюшку
// добавляем свой пункт в системное меню 'О программе'
AppendMenu(GetSystemMenu(Wizardform.Handle, False), MF_BYPOSITION, Menu.Handle, SetupMessage(msgAboutSetupMenuItem));
Application.OnMessage:= @AppOnMessage;
end;
[/more]

и

[more=О RePack]
#ifdef IS_ENHANCED
#if (Ver < 0x5020300) || (Pos('ee', IS_Ver_Str) < 1)
#pragma error 'Enhanced edition of Inno Setup (5.2.3.ee1 or higher) is required to compile this script'
#endif
#else
#error Enhanced edition of Inno Setup (restools) is required to compile this script
#endif

#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program

[Code]
function AppendMenu(hMenu: HMENU; uFlags, uIDNewItem: UINT; lpNewItem: String): BOOL;
external 'AppendMenu{#A}@user32.dll stdcall';

function GetSystemMenu(hWnd: HWND; bRevert: BOOL): HMENU;
external 'GetSystemMenu@user32.dll stdcall';

const
WM_SYSCOMMAND = $0112;

var
Menu: TMenuItem;

procedure MenuOnClick(Sender: TObject);
begin
MsgBox('bla-bla-bla', mbInformation, MB_OK);
end;

procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_SYSCOMMAND then
if Msg.wParam = Menu.Handle then
Menu.Click;
end;

procedure InitializeWizard();
var
SysMenu: HMENU;
begin
Menu := TMenuItem.Create(WizardForm);
Menu.OnClick := @MenuOnClick;

SysMenu := GetSystemMenu(Wizardform.Handle, False);
AppendMenu(SysMenu, 0, 0, '');
AppendMenu(SysMenu, 0, Menu.Handle, 'O RePack');

SysMenu := GetSystemMenu(Application.Handle, False);
AppendMenu(SysMenu, 0, 0, '');
AppendMenu(SysMenu, 0, Menu.Handle, 'O RePack');

Application.onMessage := @AppOnMessage;
end;[/more]
Автор: nortem
Дата сообщения: 03.06.2014 13:14
Прошу ПОЖАЛУЙСТА дайте скрипт а распоковку isdone запороленых ARC архивов, но есть 1 проблема, я не могу понять как сделать распоковку 2-х и больше архивов! и чтобы при распаковке они не конфиктовали. А самое глпавное чтобы вот тут было значение правильное с учетом архивов (или можно было выставить самому число) (скрин)
http://s1.hostingkartinok.com/uploads/images/2014/06/0abe1f71b9f23d9353769e5727c666d4.jpg

Скрипт http://rghost.ru/56134980
Автор: Tapas77789
Дата сообщения: 03.06.2014 13:57
tyumenik
[more=О RePack][Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.

[Languages]
Name: ru; MessagesFile: "compiler:Languages\Russian.isl"

[code]
#define A = (Defined UNICODE) ? "W" : "A"

const
GWL_WNDPROC = -4;

WM_SYSCOMMAND = $0112;

MF_BYPOSITION = $400;
MF_SEPARATOR = $800;

MyIDT = 99;

var
OldProc: Longint;

function CallWindowProc(lpPrevWndFunc: Longint; hWnd: HWND; Msg: UINT; wParam, lParam: Longint): Longint; external 'CallWindowProcA@user32.dll stdcall delayload';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall delayload';
function AppendMenu(hMenu: HMENU; uFlags, uIDNewItem: UINT; lpNewItem: String): BOOL; external 'AppendMenu{#A}@user32.dll stdcall';
function DeleteMenu(hMenu: Thandle; uPosition: Longword; uFlags: Longword): Boolean; external 'DeleteMenu@user32.dll stdcall';
function GetSystemMenu(hWnd: HWND; bRevert: BOOL): HMENU; external 'GetSystemMenu@user32.dll stdcall';

procedure AboutSetupClick;
begin
//здесь обрабатываем нажатие на пункт меню "О.Репаке"
MsgBox('bla-bla-bla', mbInformation, MB_OK);
end;

function WFProc(h: hwnd; Msg, wParam, lParam: Longint): Longint;
begin
if (Msg = WM_SYSCOMMAND) then begin
if(wParam = MyIDT) then begin
AboutSetupClick;
end;
result:=0;
end;
Result := CallWindowProc(OldProc, h, Msg, wParam, lParam);
end;

procedure InitializeWizard();
var
SysMenu: HMENU;
begin
SysMenu := GetSystemMenu(Wizardform.Handle, False);
DeleteMenu(SysMenu, 8, MF_BYPOSITION);

AppendMenu(SysMenu, 0, MyIDT, 'О.Репаке');
OldProc:=SetWindowLong(WizardForm.Handle, GWL_WNDPROC, CallbackAddr('WFProc'));
end;

procedure DeinitializeSetup();
begin
SetWindowLong(WizardForm.Handle, GWL_WNDPROC, OldProc);
end;
[/more]
Автор: dodakaedr
Дата сообщения: 03.06.2014 14:32
tyumenik

Цитата:
Доброго времени! Не мог разобрался 2 скипты... Заранее спасибо!

Не понятно что вам нужно.
[more=О RePack][Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program

[ Code]
#define A = (Defined UNICODE) ? "W" : "A"

function AppendMenu(hMenu: HMENU; uFlags, uIDNewItem: UINT; lpNewItem: String): BOOL;
external 'AppendMenu{#A}@user32.dll stdcall';

function GetSystemMenu(hWnd: HWND; bRevert: BOOL): HMENU;
external 'GetSystemMenu@user32.dll stdcall';

const
WM_SYSCOMMAND = $0112;

var
Menu: TMenuItem;

procedure MenuOnClick(Sender: TObject);
begin
MsgBox('bla-bla-bla', mbInformation, MB_OK);
end;

procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_SYSCOMMAND then
if Msg.wParam = Menu.Handle then
Menu.Click;
end;

procedure InitializeWizard();
var
SysMenu: HMENU;
begin
WizardForm.Position:=poScreenCenter;
Menu := TMenuItem.Create(WizardForm);
Menu.OnClick := @MenuOnClick;

SysMenu := GetSystemMenu(Wizardform.Handle, False);
AppendMenu(SysMenu, 0, 0, '');
AppendMenu(SysMenu, 0, Menu.Handle, 'O RePack');

SysMenu := GetSystemMenu(Application.Handle, False);
AppendMenu(SysMenu, 0, 0, '');
AppendMenu(SysMenu, 0, Menu.Handle, 'O RePack');

Application.onMessage := @AppOnMessage;
end;[/more]
Автор: tyumenik
Дата сообщения: 03.06.2014 17:11
Tapas77789,dodakaedr, смотри скрин

Не мог додедать... И умру от ума(((
Автор: dodakaedr
Дата сообщения: 03.06.2014 17:48
tyumenik
А так не сойдет? [more=O RePack][Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program

[ Code]
#define A = (Defined UNICODE) ? "W" : "A"

function AppendMenu(hMenu: HMENU; uFlags, uIDNewItem: UINT; lpNewItem: String): BOOL;
external 'AppendMenu{#A}@user32.dll stdcall';

function GetSystemMenu(hWnd: HWND; bRevert: BOOL): HMENU;
external 'GetSystemMenu@user32.dll stdcall';

const
WM_SYSCOMMAND = $0112;

var
Menu: TMenuItem;

procedure MenuOnClick(Sender: TObject);
begin
MsgBox('bla-bla-bla', mbInformation, MB_OK);
MsgBox('Здесь могла бы быть ваша реклама...', mbInformation, MB_OK)
end;

procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_SYSCOMMAND then
if Msg.wParam = Menu.Handle then
Menu.Click;
end;

procedure InitializeWizard();
var
SysMenu: HMENU;
begin
WizardForm.Position:=poScreenCenter;
Menu := TMenuItem.Create(WizardForm);
Menu.OnClick := @MenuOnClick;

SysMenu := GetSystemMenu(Wizardform.Handle, False);
AppendMenu(SysMenu, 0, 0, '');
AppendMenu(SysMenu, 0, Menu.Handle, 'O RePack');

SysMenu := GetSystemMenu(Application.Handle, False);
AppendMenu(SysMenu, 0, 0, '');
AppendMenu(SysMenu, 0, Menu.Handle, 'O RePack');

Application.onMessage := @AppOnMessage;
end;[/more]
Автор: tyumenik
Дата сообщения: 03.06.2014 18:10
dodakaedr, нет нет нет... Мне нужно: О программе - Здесь могла бы быть ваша реклама..., а репак - бла бла бла...
Автор: Tapas77789
Дата сообщения: 03.06.2014 22:29
tyumenik
[more= Мне нужно: О программе - Здесь могла бы быть ваша реклама..., а репак - бла бла бла...]

Код: [Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.

[Languages]
Name: ru; MessagesFile: "compiler:Languages\Russian.isl"

[code]
#define A = (Defined UNICODE) ? "W" : "A"

const
GWL_WNDPROC = -4;

WM_SYSCOMMAND = $0112;
WM_USER = $0400;
MF_BYPOSITION = $400;
MF_SEPARATOR = $800;

MyIDT = 99;

var
OldProc: Longint;

function CallWindowProc(lpPrevWndFunc: Longint; hWnd: HWND; Msg: UINT; wParam, lParam: Longint): Longint; external 'CallWindowProcA@user32.dll stdcall delayload';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall delayload';
function AppendMenu(hMenu: HMENU; uFlags, uIDNewItem: UINT; lpNewItem: String): BOOL; external 'AppendMenu{#A}@user32.dll stdcall';
function DeleteMenu(hMenu: Thandle; uPosition: Longword; uFlags: Longword): Boolean; external 'DeleteMenu@user32.dll stdcall';
function GetSystemMenu(hWnd: HWND; bRevert: BOOL): HMENU; external 'GetSystemMenu@user32.dll stdcall';

procedure AboutSetupClick;
begin
//здесь обрабатываем нажатие на пункт меню "О программе ..."
MsgBox('Здесь могла бы быть ваша реклама', mbInformation, MB_OK);
end;

procedure MenuSetupClick;
begin
//здесь обрабатываем нажатие на пункт меню "O RePack"
MsgBox('bla-bla-bla', mbInformation, MB_OK);
end;

function WFWndProc(h:HWND;Msg,wParam,lParam:Longint):Longint;
begin
if (Msg=WM_SYSCOMMAND) then begin
if(wParam=9999) then begin
AboutSetupClick;
Result:=0;
end;
if(wParam=MyIDT) then begin
MenuSetupClick;
Result:=0;
end;
end else begin
if Msg=$0002 then SetWindowLong(WizardForm.Handle,-4,OldProc);
Result:=CallWindowProc(OldProc,h,Msg,wParam,lParam);
end;
end;

procedure InitializeWizard();
var
SysMenu: HMENU;
begin
SysMenu := GetSystemMenu(Wizardform.Handle, False);
// DeleteMenu(SysMenu, 8, MF_BYPOSITION);

AppendMenu(SysMenu, 0, MyIDT, 'О.Репаке');
OldProc:=SetWindowLong(WizardForm.Handle, GWL_WNDPROC, CallbackAddr('WFWndProc'));
end;

procedure DeinitializeSetup();
begin
SetWindowLong(WizardForm.Handle, GWL_WNDPROC, OldProc);
end;
Автор: tyumenik
Дата сообщения: 04.06.2014 07:25
Tapas77789, не работает нажимать пункт меню (иконку) и даже переместить.
http://rghost.ru/56154792
Автор: Tapas77789
Дата сообщения: 04.06.2014 10:05
tyumenik
[more=TEST]
Код:
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.

[Languages]
Name: ru; MessagesFile: "compiler:Languages\Russian.isl"

[code]
#define A = (Defined UNICODE) ? "W" : "A"

const
GWL_WNDPROC = -4;

WM_SYSCOMMAND = $0112;

MF_BYPOSITION = $400;
MF_SEPARATOR = $800;

var
OldProc: Longint;

function CallWindowProc(lpPrevWndFunc: Longint; hWnd: HWND; Msg: UINT; wParam, lParam: Longint): Longint; external 'CallWindowProcA@user32.dll stdcall delayload';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall delayload';
function AppendMenu(hMenu: HMENU; uFlags, uIDNewItem: UINT; lpNewItem: String): BOOL; external 'AppendMenu{#A}@user32.dll stdcall';
function DeleteMenu(hMenu: Thandle; uPosition: Longword; uFlags: Longword): Boolean; external 'DeleteMenu@user32.dll stdcall';
function GetSystemMenu(hWnd: HWND; bRevert: BOOL): HMENU; external 'GetSystemMenu@user32.dll stdcall';
function MessageBox(hWnd: HWND; lpText, lpCaption: String; uType: LongWord): Integer;external 'MessageBox{#A}@user32.dll stdcall';

procedure AboutSetupClick;
begin
// MsgBox('Здесь могла бы быть ваша реклама', mbInformation, MB_OK);
MessageBox(WizardForm.Handle,'Здесь могла бы быть ваша реклама','Реклама',MB_ICONINFORMATION);
end;

procedure MenuSetupClick;
begin
// MsgBox('bla-bla-bla', mbInformation, MB_OK);
MessageBox(WizardForm.Handle,'bla-bla-bla','О.Репаке',MB_ICONINFORMATION);
end;

function WFWndProc(h:HWND;Msg,wParam,lParam:Longint):Longint;
begin
if (Msg=WM_SYSCOMMAND) then begin

if(wParam=100) then AboutSetupClick;

if(wParam=102) then MenuSetupClick;

end;

Result:=CallWindowProc(OldProc,h,Msg,wParam,lParam);
end;

procedure InitializeWizard();
var
SysMenu: HMENU;
begin
SysMenu := GetSystemMenu(Wizardform.Handle, False);
DeleteMenu(SysMenu, 8, MF_BYPOSITION);

AppendMenu(SysMenu, 0, 100, 'Реклама');
AppendMenu(SysMenu, MF_SEPARATOR, 101, '');
AppendMenu(SysMenu, 0, 102, 'О.Репаке');

OldProc:=SetWindowLong(WizardForm.Handle, GWL_WNDPROC, CallbackAddr('WFWndProc'));
end;

procedure DeinitializeSetup();
begin
SetWindowLong(WizardForm.Handle, GWL_WNDPROC, OldProc);
end;
Автор: dodakaedr
Дата сообщения: 05.06.2014 09:02
Всем привет! Подскажите как с помощью inno setup создать портативную версию программы? Дайте пример!
Автор: tyumenik
Дата сообщения: 05.06.2014 10:13
Tapas77789, вот, помогло!!! Мегаспасибо и жму руку!!!

Добавлено:
dodakaedr, добрый! http://forum.ru-board.com/topic.cgi?forum=5&topic=46338&start=130&limit=1&m=1#1
Автор: dodakaedr
Дата сообщения: 05.06.2014 20:26
tyumenik
Спасибо! А можно сделать так чтобы сразу запускалась программа, без инсталяции?
Автор: sylch
Дата сообщения: 08.06.2014 12:42
[more] [more] В общем история такая.
Есть игра Sexy Beach Zero и в ней файлы wav которых несколько тысяч занимают около 2,4 гб, и прочие файлы 4,9 гб.
После перевода Wav в ogg звук стал занимать 300 мб , а прочие файлы сжались в lzma\ultra 700 мб. После распаковки файлов и перевода ogg в wav нужно сделать файлы "data" - ppe(это делает PPExtractor.exe ). Само собой решил сделать репак игры.
Опыта почти нет.

В раздаче жалуются некоторые что игра не идет.(например win7x64).

выклюдываю исходники (сократил список файлов в скрипте а то их несколько тысяч..), посмотрите может что можно уличшить.

скрипт.

Код:
; Сценарий сгенерирован Inno Setup Script Wizard.
; СМОТРИТЕ В ДОКУМЕНТАЦИИ СВЕДЕНИЯ О СОЗДАНИИ ФАЙЛОВ СЦЕНАРИЯ INNO SETUP!

#define MyAppName "Sexy Beach Zero"
#define MyAppVersion "1.0 hf repack by sylch"
#define MyAppPublisher "illision"
#define MyAppExeName "SexyBeachZero.exe"

[Setup]
; Примечание: Значение AppId уникально идентифицирует приложение.
; Не используйте то же значение AppId в установщиках для других приложений.
; (Чтобы создать новый идентификатор GUID, нажмите Сервис | Генерировать GUID в интегрированной среде разработки).
AppId={{8C9CC5D5-A63C-4A97-B0FD-6DB05CF2A7B2}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=D:\Work
OutputBaseFilename=setup
SetupIconFile=D:\Work\icon.ico
Compression=zip
SolidCompression=yes

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

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

[Files]
; Примечание: Не используйте "Flags: ignoreversion" для любых общих системных файлов
Source: D:\Work\dist\d3d9.dll; DestDir: {app}
Source: D:\Work\dist\license.txt; DestDir: {app}
Source: D:\Work\dist\SexyBeachZero.exe; DestDir: {app}
Source: D:\Work\dist\data\sb01_00\01_kawaii.ogg; DestDir: {app}\data\sb01_00
Source: D:\Work\dist\data\sb01_00\02_kawaii.ogg; DestDir: {app}\data\sb01_00
Source: D:\Work\dist\data\sb01_00\03_kakkoii.ogg; DestDir: {app}\data\sb01_00
Source: D:\Work\dist\data\sb01_00\04_kakkoii.ogg; DestDir: {app}\data\sb01_00
Source: D:\Work\dist\data\sb02_99\vu_e_06_01_02.ogg; DestDir: {app}\data\sb02_99
Source: D:\Work\dist\data\sb02_99\vu_e_07_00_01.ogg; DestDir: {app}\data\sb02_99
Source: D:\Work\dist\data\sb02_99\vu_e_07_00_02.ogg; DestDir: {app}\data\sb02_99
Source: D:\Work\dist\data\sb02_99\vu_e_07_00_03.ogg; DestDir: {app}\data\sb02_99
Source: D:\Work\dist\data\sb02_99\vu_e_07_01_01.ogg; DestDir: {app}\data\sb02_99
Source: D:\Work\dist\data\sb02_99\vu_e_07_01_02.ogg; DestDir: {app}\data\sb02_99
Source: D:\Work\dist\data\sb02_99\vu_e_08_00_01.ogg; DestDir: {app}\data\sb02_99
Source: D:\Work\dist\data\sb02_99\vu_e_08_00_02.ogg; DestDir: {app}\data\sb02_99
Source: D:\Work\dist\data\sb02_99\vu_e_08_00_03.ogg; DestDir: {app}\data\sb02_99
Source: D:\Work\dist\data\sb02_99\vu_e_08_01_01.ogg; DestDir: {app}\data\sb02_99
Source: D:\Work\dist\data\sb02_99\vu_e_08_01_02.ogg; DestDir: {app}\data\sb02_99
.......
.......
.......
Source: D:\Work\0000\oggdec.exe; DestDir: {sys}
Source: D:\Work\0000\0dec.bat; DestDir: {tmp}; Flags: ignoreversion
Source: D:\Work\0000\dec.bat; DestDir: {tmp}; Flags: ignoreversion
Source: D:\Work\0000\del.bat; DestDir: {tmp}; Flags: ignoreversion
Source: D:\Work\0000\PPExtractor.exe; DestDir: {tmp}; Flags: ignoreversion
Source: D:\Work\0000\7z.exe; DestDir: {tmp}; Flags: ignoreversion
Source: D:\Work\0000\data.7z; DestDir: {tmp}; Flags: ignoreversion
Source: D:\Work\0000\deltmp.bat; DestDir: {tmp}; Flags: ignoreversion

[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Filename: {tmp}\0dec.bat; WorkingDir: {app}\data\sb01_00; Flags: runminimized waituntilterminated
Filename: {tmp}\dec.bat; WorkingDir: {app}\data\sb02_00; Flags: runminimized waituntilterminated
Filename: {tmp}\del.bat; WorkingDir: {app}\data\sb02_00; Flags: runminimized waituntilterminated
Filename: {tmp}\dec.bat; WorkingDir: {app}\data\sb02_01; Flags: runminimized waituntilterminated
Filename: {tmp}\del.bat; WorkingDir: {app}\data\sb02_01; Flags: runminimized waituntilterminated
Filename: {tmp}\dec.bat; WorkingDir: {app}\data\sb02_02; Flags: runminimized waituntilterminated
Filename: {tmp}\del.bat; WorkingDir: {app}\data\sb02_02; Flags: runminimized waituntilterminated
Filename: {tmp}\dec.bat; WorkingDir: {app}\data\sb02_03; Flags: runminimized waituntilterminated
Filename: {tmp}\del.bat; WorkingDir: {app}\data\sb02_03; Flags: runminimized waituntilterminated
Filename: {tmp}\dec.bat; WorkingDir: {app}\data\sb02_04; Flags: runminimized waituntilterminated
Filename: {tmp}\del.bat; WorkingDir: {app}\data\sb02_04; Flags: runminimized waituntilterminated
Filename: {tmp}\dec.bat; WorkingDir: {app}\data\sb02_98; Flags: runminimized waituntilterminated
Filename: {tmp}\del.bat; WorkingDir: {app}\data\sb02_98; Flags: runminimized waituntilterminated
Filename: {tmp}\dec.bat; WorkingDir: {app}\data\sb02_99; Flags: runminimized waituntilterminated
Filename: {tmp}\del.bat; WorkingDir: {app}\data\sb02_99; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb01_00; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb02_00; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb02_01; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb02_02; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb02_03; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb02_04; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb02_98; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb02_99; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\7z.exe; WorkingDir: {app}; Parameters: "x -o""{app}\data"" -y {tmp}\data.7z"; Flags: runhidden
Filename: {tmp}\PPExtractor.exe; Parameters: sb01_50; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb03_00; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb03_01; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb05_00; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb06_00; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb07_00; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb08_00; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb09_00; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb09_xx; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb10_00; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\PPExtractor.exe; Parameters: sb11_00; WorkingDir: {app}\data; Flags: runminimized waituntilterminated
Filename: {tmp}\deltmp.bat; WorkingDir: {app}\data; Flags: runminimized waituntilterminated


[Registry]
Root: HKCU; SubKey: Software\illusion\SexyBeachZERO; ValueType: string; ValueName: INSTALLDIR; ValueData: {app}
Root: HKCU; SubKey: Software\illusion\SexyBeachZERO; ValueType: string; ValueName: PRODUCTNAME; ValueData: Sexy???ZERO
Root: HKCU; SubKey: Software\illusion\SexyBeachZERO; ValueType: dword; ValueName: VERSION; ValueData: $00000064

[Dirs]
Name: {app}\data
Name: {app}\data\sb01_00
Name: {app}\data\sb02_00
Name: {app}\data\sb02_01
Name: {app}\data\sb02_02
Name: {app}\data\sb02_03
Name: {app}\data\sb02_04
Name: {app}\data\sb02_98
Name: {app}\data\sb02_99
Автор: sjwrec
Дата сообщения: 08.06.2014 21:41
sylch

Зачем Вы прописываете путь к каждому файлу? Можно это дело упростить одной строкой и даже секция Dirs не понадобится :

Код:
[Files]
Source: D:\Work\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
Автор: sylch
Дата сообщения: 08.06.2014 22:11

Цитата:

sylch

Зачем Вы прописываете путь к каждому файлу? Можно это дело упростить одной строкой и даже секция Dirs не понадобится :

Код:

[Files]
Source: D:\Work\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs


Спасибо знаю. Просто не все файлы из директории должны были попасть в конечную папку {app} и не хотелось создавать несколько папок нужных файлов чтобы потом не было ошибок.
Так как файлы игры сжимаются в конце в формат файлов игры *.pp не желательно чтобы в конечной папки были файлы типа dec.bat 0dec.bat del.bat и oggdec.exe.
Автор: sjwrec
Дата сообщения: 09.06.2014 10:52
sylch



Цитата:
Просто не все файлы из директории должны были попасть в конечную папку {app} и не хотелось создавать несколько папок нужных файлов чтобы потом не было ошибок. Так как файлы игры сжимаются в конце в формат файлов игры *.pp не желательно чтобы в конечной папки были файлы типа dec.bat 0dec.bat del.bat и oggdec.exe.


Опять же можно поступить вот так:

[Files]
Source: D:\Work\dist\d3d9.dll; DestDir: {app}
Source: D:\Work\dist\license.txt; DestDir: {app}
Source: D:\Work\dist\SexyBeachZero.exe; DestDir: {app}

Source: D:\Work\dist\*.ogg; DestDir: {app}\dist; Flags: ignoreversion recursesubdirs createallsubdirs

Source: D:\Work\0000\oggdec.exe; DestDir: {sys}
Source: D:\Work\0000\0dec.bat; DestDir: {tmp}; Flags: ignoreversion
Source: D:\Work\0000\dec.bat; DestDir: {tmp}; Flags: ignoreversion
Source: D:\Work\0000\del.bat; DestDir: {tmp}; Flags: ignoreversion
Source: D:\Work\0000\PPExtractor.exe; DestDir: {tmp}; Flags: ignoreversion
Source: D:\Work\0000\7z.exe; DestDir: {tmp}; Flags: ignoreversion
Source: D:\Work\0000\data.7z; DestDir: {tmp}; Flags: ignoreversion
Source: D:\Work\0000\deltmp.bat; DestDir: {tmp}; Flags: ignoreversion

В батниках прописать самоудаление после работы. Всё меньше строк чем у Вас

И закидывать oggdec.exe в system32 не лучшая идея. Например Windows 7 или 8 просто могут не дать инсталлу скопировать файл в эту директоррию. Отсюда может и возникнуть комменты в раздаче что игра не работает.

Автор: sylch
Дата сообщения: 09.06.2014 13:51
[more]
Цитата:
В батниках прописать самоудаление после работы. Всё меньше строк чем у Вас

И закидывать oggdec.exe в system32 не лучшая идея. Например Windows 7 или 8 просто могут не дать инсталлу скопировать файл в эту директоррию. Отсюда может и возникнуть комменты в раздаче что игра не работает.

Идея конечно отличная одно но, не всегда удаляется oggdec.exe видимо винда или еще что то обращается к файлам и не дает удалить. Ну и хлам вида *.bat и oggdec.exe думаю не нужен в архивах игры.

Хотя вы не совсем правы. Проверял на ноуте мамы лицензия windows домашняя базовая x86 sp1 все отлично поставилось.

Хотя вероятность есть что oggdec.exe и *.bat попадут в директорию игры но после расспаковки уже поставленной игры их там не было.

я не знаю как исправить батник чтобы получал список файлов из папки и конвертировал их oggdec.exe обратно в wav при этом был не в {app}, а то в некоторых папках wav файлов до нескольких тысяч. По этой прочине чтобы убрать хлам из {app} я и положил oggdec.exe в {sys} .


Код:
@Echo Off
Title decode ogg to wav
For %%F In (*.ogg) Do Call :msin %%F
Exit
:msin
Start /Wait oggdec.exe %1
GoTo :EOF
Exit
Автор: nortem
Дата сообщения: 09.06.2014 17:06
Прошу ПОЖАЛУЙСТА дайте скрипт а распоковку isdone запороленых ARC архивов, но есть 1 проблема, я не могу понять как сделать распоковку 2-х и больше архивов! и чтобы при распаковке они не конфиктовали. А самое глпавное чтобы вот тут было значение правильное с учетом архивов (или можно было выставить самому число) (скрин)
http://s1.hostingkartinok.com/uploads/images/2014/06/0abe1f71b9f23d9353769e5727c666d4.jpg

Скрипт http://rghost.ru/56134980

Я прошу вас, очень надо
Автор: sjwrec
Дата сообщения: 09.06.2014 20:41
sylch

И снова я Вас не понимаю. Как могут попасть батники и oggdec.exe в папку с игрой? Вы же указываете путь TMP. А это временная папка, которая находится вообще не в папке с игрой. Инсталл удаляет её содержимое при выходе из установки. Поэтому писать самоудаление батников и временных файлов в данном случае необязательно. Нужно только удалить все ogg из папок с игрой до упаковки в игровые архивы.

Для управления oggdec.exe можно использовать библиотеку isDone.dll - но если Вы знаете как её подключать к своему скрипту.
Автор: sjwrec
Дата сообщения: 10.06.2014 12:16
nortem
Вот сделал примерно как просили.

Скачать скрипт 12

Скрипт isDone добавлен как отдельный модуль.
Добавил возможность установить размер игры вручную.

Автор: nortem
Дата сообщения: 11.06.2014 15:37
ОЙ СПАСИБО!

Добавлено:
sjwrec, спасибо, но трабл такой:
http://hkar.ru/tkIv

и я так понимаю архивы мне вот так делить? http://hkar.ru/tkIw просто папка main много весит, и что мне сделать чтобы файлы из архива под номером допустим 3 разархивировались в папку main (она в папке с игрой) разврхивированой 1ым архивом?
Автор: sjwrec
Дата сообщения: 11.06.2014 19:13
nortem
1. Ваш компиллятор похоже не поддерживает эту функцию.

Закомментируйте эту строку

Код:
LabelCurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width-ScaleX(100));
Автор: dinis124
Дата сообщения: 12.06.2014 17:47
Ребят, подскажите что она мне пытается сказать этим а: Суть понял, но в скрипте не вижу где прописать no


Код: UsePreviousLanguage must be set to "no" when Appld includes constants.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758

Предыдущая тема: Только инсталлятор


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.