|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9] |
|
|
Скрипты Inno Setup. Помощь и советы [часть 9]
|
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z |
|
|
Отправлено: 16:09, 04-04-2018 |
|
Старожил Сообщения: 342
|
Профиль | Отправить PM | Цитировать Цитата El Sanchez:
Создается файл с таким содержимым %["saveDataLocation" => "file://./D/Games/Fate/Stay Night [Realta Nua] - Ultimate Edition/fateavedata"] Из-за чего игра крашится после первого запуска. А при втором запуске крашится моментально... |
|
|
------- Отправлено: 10:24, 14-06-2019 | #341 |
|
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата vk_k14m@vk:
|
|
|
Отправлено: 14:39, 14-06-2019 | #342 |
|
Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата vk_k14m@vk:
|
|
|
------- Отправлено: 19:25, 14-06-2019 | #343 |
|
Старожил Сообщения: 220
|
Здравствуйте!
Есть небольшой простой скрипт для установки мода в игру. Он делает бекап оригинальных файлов, копирует новые и создает деинсталлятор. Его необходимо немного усовершенствовать: 1. Создать резервную копию файлов Game.dll и Game_DX11.dll. 2. Скопировать в корень игры 4 файла XVI32 .cmd/.exe/.ini/.xsc 3. Выполнить XVI32.cmd 4. Удалить эти 4 файла. 5. При деинсталляции вернуть исходные Game.dll и Game_DX11.dll. Можете помочь с такой задачей? P.S. с Inno Setup (да и в принципе с программированием) не дружу совсем. Файл 158063 |
|
Последний раз редактировалось Bio_Hazard, 08-07-2019 в 12:19. Отправлено: 22:36, 07-07-2019 | #344 |
|
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Bio_Hazard, а пункты 2-4 это и есть усовершенствования по сравнению с "копирует новые"?
Скрытый текст
#define AppName "Game Name"
[Setup]
AppName={#AppName} Mod
AppVersion=1.0
DefaultDirName={pf}\{#AppName}
DirExistsWarning=no
[Languages]
Name: ru; MessagesFile: compiler:Languages\russian.isl
[Files]
Source: {app}\Game.dll; DestDir: {app}; DestName: Game.dll.bkp; Flags: external skipifsourcedoesntexist
Source: {app}\Game_DX11.dll; DestDir: {app}; DestName: Game_DX11.dll.bkp; Flags: external skipifsourcedoesntexist
Source: xvi32.*; DestDir: {app}; Flags: deleteafterinstall
[Run]
Filename: {app}\xvi32.cmd; Flags: runhidden shellexec skipifdoesntexist
[UninstallDelete]
Type: files; Name: {app}\Game.dll.bkp
Type: files; Name: {app}\Game_DX11.dll.bkp
[Code]
procedure RestoreFromBackup(const AFileName: string);
var
LFileName: string;
begin
LFileName := ChangeFileExt(AFileName, '');
if FileExists(LFileName) then
FileCopy(AFileName, ChangeFileExt(AFileName, ''), False);
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
case CurUninstallStep of
usUninstall:
begin
RestoreFromBackup(ExpandConstant('{app}\Game.dll.bkp'));
RestoreFromBackup(ExpandConstant('{app}\Game_DX11.dll.bkp'));
end;
end;
end;
|
|
Отправлено: 11:01, 09-07-2019 | #345 |
|
Старожил Сообщения: 220
|
Цитата Bio_Hazard:
Я не знаю, почему мой архив не подгрузился (Файл 158063), но взяв большую часть Вашего кода, совместил его со "своим" и немного доработав XVI32.cmd, я получил рабочий, полностью удовлетворяющий мои цели скрипт. Может получилось немного топорно, но работает. Вот что получилось:
#define ModName "TQRagnarökMod by BioHazardN7"
#define ModVersion "2.3.27"
#define ModShortDescription "Модификация для Titan Quest"
[Setup]
AppId={{70653654-6624-42B4-B9A4-CAE370D75364}
AppName={#ModName} {#ModVersion}
AppVerName={#ModName} {#ModVersion}
// AppPublisher=http://tqrm.zzz.com.ua
// AppPublisherURL=http://tqrm.zzz.com.ua
// AppSupportURL=http://tqrm.zzz.com.ua
// AppUpdatesURL=http://tqrm.zzz.com.ua
DefaultDirName={code:GetInstallationPath}
DefaultGroupName={#ModName}
DirExistsWarning=no
DisableWelcomePage=no
AllowNoIcons=true
InfoBeforeFile=Data\Description.rtf
OutputDir=Release
OutputBaseFilename=TQRagnarokMod2327a_Installer
SetupIconFile=Data\Icon.ico
// Степень сжатия. Сильное: lzma/ultra
Compression=none
SolidCompression=true
VersionInfoVersion={#ModVersion}
// VersionInfoCompany=http://tqrm.zzz.com.ua
VersionInfoDescription={#ModShortDescription}
WizardImageFile=Data\Poster.bmp
// VersionInfoCopyright=(c) http://tqrm.zzz.com.ua
WizardSmallImageFile=Data\Logo.bmp
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: Files\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: CreateBackup
Source: {app}\Game.dll; DestDir: {app}; DestName: Game.dll.bak; Flags: external skipifsourcedoesntexist
Source: {app}\Game_DX11.dll; DestDir: {app}; DestName: Game_DX11.dll.bak; Flags: external skipifsourcedoesntexist
[Run]
Filename: {app}\xvi32.cmd; Flags: runhidden shellexec skipifdoesntexist
[UninstallDelete]
Type: files; Name: {app}\Game.dll.bak
Type: files; Name: {app}\Game_DX11.dll.bak
[Icons]
Name: {group}\{cm:ProgramOnTheWeb,{#ModName} {#ModVersion}}; Filename: http://tqrm.zzz.com.ua
Name: {group}\Последняя версия {#ModName}; Filename: http://tqrm.zzz.com.ua/ru/#download
Name: {group}\The latest version of {#ModName}; Filename: http://tqrm.zzz.com.ua/en/#download
Name: {group}\www.titanquest.org.ua; Filename: https://titanquest.org.ua/tqragnarokmod_by_biohazardn7
Name: {group}\vk.com; Filename: https://vk.com/tqrm_n7
Name: {group}\Telegram; Filename: https://t.me/TQRM_N7
Name: {group}\{cm:UninstallProgram,{#ModName} {#ModVersion}}; Filename: {uninstallexe}
// [Messages]
// BeveledLabel=http://tqrm.zzz.com.ua
[code]
procedure RestoreFromBackup(const AFileName: string);
var
LFileName: string;
begin
LFileName := ChangeFileExt(AFileName, '');
if FileExists(LFileName) then
FileCopy(AFileName, ChangeFileExt(AFileName, ''), False);
end;
// DETECT PREVIOUS VERSION
function InitializeSetup(): Boolean;
begin
Result := True;
if RegKeyExists(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{70653654-6624-42B4-B9A4-CAE370D75364}_is1') or
RegKeyExists(HKEY_LOCAL_MACHINE,
'SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{70653654-6624-42B4-B9A4-CAE370D75364}_is1') or
RegKeyExists(HKEY_CURRENT_USER,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{70653654-6624-42B4-B9A4-CAE370D75364}_is1') then
begin
Log('NEEED')
//MsgBox('Для переустановки или установки новой версии - необходимо удалить предыдущую', mbInformation, MB_OK);
//Result := False;
end;
end;
// CLICKABLE LINK TO TQ SITE
procedure BevelLabelClick(Sender: TObject);
var ErrorCode: Integer;
begin
ShellExec('open','http://tqrm.zzz.com.ua','', '', SW_SHOW, ewNoWait, ErrorCode)
end;
procedure InitializeWizard();
begin
with WizardForm do begin
with BeveledLabel do begin
OnClick:=@BevelLabelClick;
Font.Color:=clBlue;
Enabled:=True;
Cursor:=crHand;
end;
end;
end;
// PAGE WITH DESTINATION
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpSelectDir then
begin
WizardForm.DirEdit.Enabled := True;
WizardForm.DirBrowseButton.Enabled := True;
end
else
end;
// CREATE BACKUP BEFORE INSTALL
procedure CreateBackup;
var
srcFile, destFile: string;
begin
if RegKeyExists(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{70653654-6624-42B4-B9A4-CAE370D75364}_is1') or
RegKeyExists(HKEY_LOCAL_MACHINE,
'SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{70653654-6624-42B4-B9A4-CAE370D75364}_is1') or
RegKeyExists(HKEY_CURRENT_USER,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{70653654-6624-42B4-B9A4-CAE370D75364}_is1') then
begin
// Do nothing
end
else
begin
srcFile:= ExpandConstant(CurrentFileName);
destFile:= srcFile + '.bak';
DeleteFile(destFile);
RenameFile(srcFile, destFile);
end
end;
procedure RestoreBackup(backupDir: string);
var
srcFile, destFile: string;
FSR, DSR: TFindRec;
FindResult: Boolean;
APath: string;
begin
APath := AddBackslash(backupDir);
FindResult := FindFirst(APath + '*.bak', FSR);
try
while FindResult do
begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
begin
srcFile:= APath + FSR.Name;
destFile:= Copy(srcFile, 0, Length(srcFile)-4);
DeleteFile(destFile);
RenameFile(srcFile, destFile);
end;
FindResult := FindNext(FSR);
end;
FindResult := FindFirst(APath + '*.*', DSR);
while FindResult do
begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and
not ((DSR.Name = '.') or (DSR.Name = '..')) then
{Recursion} RestoreBackup(APath + DSR.Name);
FindResult := FindNext(DSR);
end;
finally
FindClose(FSR);
FindClose(DSR);
end;
end;
// RESTORE BACKUP AFTER UNINSTALL
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
RestoreBackup(ExpandConstant('{app}'))
end;
begin
case CurUninstallStep of
usUninstall:
begin
RestoreFromBackup(ExpandConstant('{app}\Game.dll.bak'));
RestoreFromBackup(ExpandConstant('{app}\Game_DX11.dll.bak'));
end;
end;
end;
end;
// DETECT PATH OF INSTALLATION
var
InstallationPath: string;
function GetInstallationPath(Param: string): string;
begin
{ Detected path is cached, as this gets called multiple times }
if InstallationPath = '' then
begin
if RegQueryStringValue(
HKLM32, 'SOFTWARE\WOW6432Node\GOG.com\Games\1196955511',
'path', InstallationPath) then
begin
Log('Detected GOG installation: ' + InstallationPath);
end
else
if RegQueryStringValue(
HKLM64, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 475150',
'InstallLocation', InstallationPath) then
begin
Log('Detected Steam installation: ' + InstallationPath);
end
else
begin
InstallationPath := ExpandConstant('{pf}');
MsgBox('Не удалось автоматически определить где установлена игра. В ходе установки укажите путь вручную', mbInformation, MB_OK);
Log('No installation detected, using the default path: ' + InstallationPath);
end;
end;
Result := InstallationPath;
end;
Спасибо за помощь! |
|
|
Последний раз редактировалось Bio_Hazard, 09-07-2019 в 15:47. Отправлено: 15:37, 09-07-2019 | #346 |
|
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата Bio_Hazard:
|
|
|
Отправлено: 21:39, 09-07-2019 | #347 |
|
Старожил Сообщения: 220
|
Цитата El Sanchez:
|
|
|
Отправлено: 23:06, 09-07-2019 | #348 |
|
Старожил Сообщения: 220
|
Здравствуйте. Обнаружился косяк при установке на 32-х битных системах (обнаружилось на Windows 7)
Ошибка
Код инсталлятора:
#define ModName "TQRagnarökMod by BioHazardN7"
#define ModVersion "2.3.27"
#define ModShortDescription "Модификация для Titan Quest"
[Setup]
AppId={{70653654-6624-42B4-B9A4-CAE370D75364}
AppName={#ModName} {#ModVersion}
AppVerName={#ModName} {#ModVersion}
// AppPublisher=http://tqrm.zzz.com.ua
// AppPublisherURL=http://tqrm.zzz.com.ua
// AppSupportURL=http://tqrm.zzz.com.ua
// AppUpdatesURL=http://tqrm.zzz.com.ua
DefaultDirName={code:GetInstallationPath}
DefaultGroupName={#ModName}
DirExistsWarning=no
DisableWelcomePage=no
AllowNoIcons=true
InfoBeforeFile=Data\Description.rtf
OutputDir=Release
OutputBaseFilename=TQRagnarokMod2327a_Installer
SetupIconFile=Data\Icon.ico
// Степень сжатия. Сильное: lzma/ultra
Compression=none
SolidCompression=true
VersionInfoVersion={#ModVersion}
// VersionInfoCompany=http://tqrm.zzz.com.ua
VersionInfoDescription={#ModShortDescription}
WizardImageFile=Data\Poster.bmp
// VersionInfoCopyright=(c) http://tqrm.zzz.com.ua
WizardSmallImageFile=Data\Logo.bmp
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: Files\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: CreateBackup
Source: {app}\Game.dll; DestDir: {app}; DestName: Game.dll.bak; Flags: external skipifsourcedoesntexist
Source: {app}\Game_DX11.dll; DestDir: {app}; DestName: Game_DX11.dll.bak; Flags: external skipifsourcedoesntexist
[Run]
Filename: {app}\xvi32.cmd; Flags: runhidden shellexec skipifdoesntexist
[UninstallDelete]
Type: files; Name: {app}\Game.dll.bak
Type: files; Name: {app}\Game_DX11.dll.bak
[Icons]
Name: {group}\{cm:ProgramOnTheWeb,{#ModName} {#ModVersion}}; Filename: http://tqrm.zzz.com.ua
Name: {group}\Последняя версия {#ModName}; Filename: http://tqrm.zzz.com.ua/ru/#download
Name: {group}\The latest version of {#ModName}; Filename: http://tqrm.zzz.com.ua/en/#download
Name: {group}\www.titanquest.org.ua; Filename: https://titanquest.org.ua/tqragnarokmod_by_biohazardn7
Name: {group}\vk.com; Filename: https://vk.com/tqrm_n7
Name: {group}\Telegram; Filename: https://t.me/TQRM_N7
Name: {group}\{cm:UninstallProgram,{#ModName} {#ModVersion}}; Filename: {uninstallexe}
// [Messages]
// BeveledLabel=http://tqrm.zzz.com.ua
[code]
procedure RestoreFromBackup(const AFileName: string);
var
LFileName: string;
begin
LFileName := ChangeFileExt(AFileName, '');
if FileExists(LFileName) then
FileCopy(AFileName, ChangeFileExt(AFileName, ''), False);
end;
// DETECT PREVIOUS VERSION
function InitializeSetup(): Boolean;
begin
Result := True;
if RegKeyExists(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{70653654-6624-42B4-B9A4-CAE370D75364}_is1') or
RegKeyExists(HKEY_CURRENT_USER,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{70653654-6624-42B4-B9A4-CAE370D75364}_is1') then
begin
Log('NEEED')
//MsgBox('Для переустановки или установки новой версии - необходимо удалить предыдущую', mbInformation, MB_OK);
//Result := False;
end;
end;
// CLICKABLE LINK TO TQ SITE
procedure BevelLabelClick(Sender: TObject);
var ErrorCode: Integer;
begin
ShellExec('open','http://tqrm.zzz.com.ua','', '', SW_SHOW, ewNoWait, ErrorCode)
end;
procedure InitializeWizard();
begin
with WizardForm do begin
with BeveledLabel do begin
OnClick:=@BevelLabelClick;
Font.Color:=clBlue;
Enabled:=True;
Cursor:=crHand;
end;
end;
end;
// PAGE WITH DESTINATION
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpSelectDir then
begin
WizardForm.DirEdit.Enabled := True;
WizardForm.DirBrowseButton.Enabled := True;
end
else
end;
// CREATE BACKUP BEFORE INSTALL
procedure CreateBackup;
var
srcFile, destFile: string;
begin
if RegKeyExists(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{70653654-6624-42B4-B9A4-CAE370D75364}_is1') or
RegKeyExists(HKEY_CURRENT_USER,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{70653654-6624-42B4-B9A4-CAE370D75364}_is1') then
begin
// Do nothing
end
else
begin
srcFile:= ExpandConstant(CurrentFileName);
destFile:= srcFile + '.bak';
DeleteFile(destFile);
RenameFile(srcFile, destFile);
end
end;
procedure RestoreBackup(backupDir: string);
var
srcFile, destFile: string;
FSR, DSR: TFindRec;
FindResult: Boolean;
APath: string;
begin
APath := AddBackslash(backupDir);
FindResult := FindFirst(APath + '*.bak', FSR);
try
while FindResult do
begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
begin
srcFile:= APath + FSR.Name;
destFile:= Copy(srcFile, 0, Length(srcFile)-4);
DeleteFile(destFile);
RenameFile(srcFile, destFile);
end;
FindResult := FindNext(FSR);
end;
FindResult := FindFirst(APath + '*.*', DSR);
while FindResult do
begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and
not ((DSR.Name = '.') or (DSR.Name = '..')) then
{Recursion} RestoreBackup(APath + DSR.Name);
FindResult := FindNext(DSR);
end;
finally
FindClose(FSR);
FindClose(DSR);
end;
end;
// RESTORE BACKUP AFTER UNINSTALL
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
RestoreBackup(ExpandConstant('{app}'))
end;
begin
case CurUninstallStep of
usUninstall:
begin
RestoreFromBackup(ExpandConstant('{app}\Game.dll.bak'));
RestoreFromBackup(ExpandConstant('{app}\Game_DX11.dll.bak'));
end;
end;
end;
end;
// DETECT PATH OF INSTALLATION
var
InstallationPath: string;
function GetInstallationPath(Param: string): string;
begin
{ Detected path is cached, as this gets called multiple times }
if InstallationPath = '' then
begin
if RegQueryStringValue(
HKLM32, 'SOFTWARE\GOG.com\Games\1196955511',
'path', InstallationPath) then
begin
Log('Detected GOG installation: ' + InstallationPath);
end
else
if RegQueryStringValue(
HKLM64, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 475150',
'InstallLocation', InstallationPath) then
begin
Log('Detected Steam installation: ' + InstallationPath);
end
else
begin
InstallationPath := ExpandConstant('{pf}');
MsgBox('Не удалось автоматически определить где установлена игра. В ходе установки укажите путь вручную', mbInformation, MB_OK);
Log('No installation detected, using the default path: ' + InstallationPath);
end;
end;
Result := InstallationPath;
end;
Можете подсказать как исправить? |
|
Отправлено: 15:16, 16-07-2019 | #349 |
|
Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата Bio_Hazard:
Скрытый текст
function GetInstallationPath(Param: string): string;
begin
{ Detected path is cached, as this gets called multiple times }
if InstallationPath = '' then
begin
if RegQueryStringValue(
HKLM32, 'SOFTWARE\GOG.com\Games\1196955511',
'path', InstallationPath) then
begin
Log('Detected GOG installation: ' + InstallationPath);
end
else
if IsWin64 then
if RegQueryStringValue(
HKLM64, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 475150',
'InstallLocation', InstallationPath) then
begin
Log('Detected Steam installation: ' + InstallationPath);
end
else
begin
InstallationPath := ExpandConstant('{pf}');
MsgBox('Не удалось автоматически определить где установлена игра. В ходе установки укажите путь вручную', mbInformation, MB_OK);
Log('No installation detected, using the default path: ' + InstallationPath);
end;
end;
Result := InstallationPath;
end;
|
|
|
------- Отправлено: 16:11, 16-07-2019 | #350 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Скрипты Inno Setup. Помощь и советы [часть 7] | El Sanchez | Автоматическая установка приложений | 2499 | 02-02-2015 08:59 | |
| Скрипты Inno Setup. Помощь и советы [часть 6] | El Sanchez | Автоматическая установка приложений | 2494 | 10-03-2014 11:51 | |
| Скрипты Inno Setup. Помощь и советы [часть 5] | El Sanchez | Автоматическая установка приложений | 1999 | 28-03-2013 19:09 | |
| Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
| Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 | |
|