Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
adelina.dragonborn@vk, все описаное выше, это вина GDF-Maker'а. Он кривой, или не полный, не знаю, корректно работают только dll'ки идущие вместе с игрой. XML можете выдрать из той библы, что я давал для проверки.
adelina.dragonborn@vk
22-07-2013, 12:59
saurn, спасибо за информацию.
А из той библы вырываются только Data_2.bin и Data_1.bin
Нет XML...
adelina.dragonborn@vk
22-07-2013, 19:33
уже не знаю, что делать...пол дня убил, ниче не выходит, все также не показывается оценка, все также не работает ссылка, ерунда какая-то. Вырвал из той библы Data_2.bin и Data_1.bin (которые и являются xml-файлами), отредактировал, запихал в ту же библу, и один фиг ниче не изменилось, все тоже самое...
mat_y@vk
23-07-2013, 14:42
Советую скачать Need for Speed™ Undercover.iss v 2.4c [Final] от YURSHAT модернизированный мной, и посмотреть, как там реализованы компоненты. »
А не возьметесь добавить эту форму за материальную благодарность? А то я уже прям совсем отчаялся.
mat_y@vk вот
http://rghost.ru/47620796
mat_y@vk
24-07-2013, 08:33
mat_y@vk вот
http://rghost.ru/47620796 »
Огромнейшее спасибо. Я правильно понял, что для каждого компонента надо создавать (описывать) свою строчку кодом? А если у меня 10-15 компонентов, можно как-то создать скроллинг или создать поле, в которое будут автоматом браться компоненты из раздела Components? У Вас есть скайп?
mat_y@vk
http://rghost.ru/47633999
vint56, а с чем Вы работаете? У меня Inno ругается на ComponentsListTVStyle=yes и так далее по тексту?
Mat_y InnoUltra там есть вот здесь можеш скачать http://innoultra.ru/
Inno Setup restool 5.5.1 ee2 unicode
vint56, а Вы знаете, можно ли для ярлыка прописать "/"... мне надо к имени добавить " /launcher"... а Инно переворачивает"\" и превращает в путь.
adelina.dragonborn@vk
24-07-2013, 22:21
Хочу сделать кнопку на странице установки - "пауза" (остановить стандартную распаковку)
Есть похожий скрипт где-нибудь?
Mat_y, Parameters: "/launcher"
Mat_y
[Icons]
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon; Parameters: /launcher;
mat_y@vk
25-07-2013, 14:45
vint56, и опят примного благодарен.
А есть ли способ заставить установщик найти папку на компьютере и скопировать ее в другое место?
mat_y@vk
[Setup]
AppName=MyProg
AppVerName=MyProg
DefaultDirName={pf}\MyProg
DefaultGroupName=MyProg
OutputDir=.
[Code]
type
Pchar = PAnsiChar;
function MoveFile(const srcFile, destFile: PChar): Integer; external 'MoveFileA@kernel32.dll stdcall';
procedure Backup (const Mydir,BackDir: string; MyFiles: array of string);
var
i:integer;
FindFiles: TFindRec;
begin
for i:=0 to GetArrayLength(MyFiles)-1 do
begin
if FindFirst(MyDir+MyFiles[i], FindFiles) then begin
if not DirExists(BackDir) then CreateDir(BackDir);
repeat MoveFile(MyDir+FindFiles.Name, BackDir+FindFiles.Name) until not FindNext(FindFiles);
FindClose(FindFiles);
RemoveDir(MyDir)
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
// Backup(ExpandConstant('{app}\Game\Bin\'), ExpandConstant('{app}\Backup\'),['TS3.exe','gameplay.package','*.precomp','*.bmp','*.pk3']);
Backup(ExpandConstant('{app}\Game\Bin\'), ExpandConstant('{app}\Backup\'),['*.pk3']);
// Backup(папка откуда брать файлы, папка куда перемещать файлы, файлы или маски файлов)
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then begin
Backup(ExpandConstant('{app}\Backup\'), ExpandConstant('{app}\Game\Bin\'),['*']);
end;
end;
Johny777
25-07-2013, 18:06
vint56, mat_y@vk, Копирование папки методом "CopyFolder" FileSystemObject-а:
(http://msdn.microsoft.com/en-us/library/xbfwysex%28v=vs.85%29.aspx)
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
type
LPCTSTR = String;
function PathIsDirectory(pszPath: LPCTSTR): BOOL; external 'PathIsDirectory{#A}@Shlwapi.dll stdcall';
function PathFileExists(pszPath: LPCTSTR): BOOL; external 'PathFileExists{#A}@Shlwapi.dll stdcall';
function SetFileAttributes(lpFileName: LPCTSTR; dwFileAttributes: DWORD): BOOL; external 'SetFileAttributes{#A}@Kernel32.dll stdcall';
function GetFileAttributes(lpFileName: LPCTSTR): DWORD; external 'GetFileAttributes{#A}@Kernel32.dll stdcall';
function CopyFolder(const Source, Destination: String; const Overwrite: Boolean): Boolean;
var
ModifiedDestPath: String;
oFS: Variant;
adjAttr: BOOL;
begin
if not PathFileExists(Source) then Exit;
if not PathFileExists(Destination) then
begin
if not ForceDirectories(Destination) then Exit;
end else if not PathIsDirectory(Destination) then Exit;
ModifiedDestPath := AddBackslash(RemoveBackslash(Destination))
if (GetFileAttributes(ModifiedDestPath) and FILE_ATTRIBUTE_READONLY) = FILE_ATTRIBUTE_READONLY then
begin
adjAttr := SetFileAttributes(ModifiedDestPath, FILE_ATTRIBUTE_NORMAL);
if not adjAttr then Exit;
end;
////////////////////////////////////////////////////
oFS := CreateOleObject('Scripting.FileSystemObject');
try
Result := oFS.CopyFolder(Source, ModifiedDestPath, Overwrite);
except
ShowExceptionMessage();
finally
if adjAttr then SetFileAttributes(ModifiedDestPath, FILE_ATTRIBUTE_READONLY);
end;
end;
procedure InitializeWizard();
begin
CopyFolder('C:\test\VALVE\half-life 2\bin', 'C:\Copy', True);
end;
блок:
if not PathFileExists(Source) then Exit;
if not PathFileExists(Destination) then
begin
if not ForceDirectories(Destination) then Exit;
end else if not PathIsDirectory(Destination) then Exit;
ModifiedDestPath := AddBackslash(RemoveBackslash(Destination))
if (GetFileAttributes(ModifiedDestPath) and FILE_ATTRIBUTE_READONLY) = FILE_ATTRIBUTE_READONLY then
begin
adjAttr := SetFileAttributes(ModifiedDestPath, FILE_ATTRIBUTE_NORMAL);
if not adjAttr then Exit;
end;
нужен чтоб не было исключений при копировании. Возможные причины появления исключений по ссылке выше, внизу
PS: Рекомендую копировать с перезаписью, чтоб не было исключения в случае если копируемая папка существует
vint56, Johny777, а если мне надо, чтобы папка копировалась, когда я выбрал соответствующий элемент при выборе компонентов?
Мне надо, чтобы файлы полностью скопировались из одной папки в другую, а потом часть из них заменилась на файлы из инсталлятора (записалась поверх).
adelina.dragonborn@vk
26-07-2013, 10:33
Mat_y, используй IsComponentSelected (http://www.jrsoftware.org/ishelp/index.php?topic=isxfunc_iscomponentselected)
mat_y@vk
26-07-2013, 15:59
vint56, А ваш код будет работать без
function MoveFile(const srcFile, destFile: PChar): Integer; external 'MoveFileA@kernel32.dll stdcall';
И еще... вроде я код вставил... фаил собрался... новая папка не появилась, зато папка по указанному адресу исчезла :(
папка откуда брать файлы, папка куда перемещать файлы, файлы или маски файлов
А мне не надо перемещать... мне важно именно скопировать.
Johny777, а как в Ваш код добавить IsComponentSelected?
CopyFolder('C:\test\VALVE\half-life 2\bin', 'C:\Copy', True); можно заменить на CopyFolder('{app}\1\', '{app}\2\, True); ???
Johny777, а как в Ваш код добавить IsComponentSelected? »
Копирование папки на шаге PostInstall, если выбран соответствующий компонент. Только в качестве примера.
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
OutputBaseFilename=1
OutputDir=...
[Files]
Source: c:\windows\fonts\*; DestDir: {app}\1; Flags: external
[Components]
Name: copyfolder; Description: Копировать папку;
[Code]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
type
LPCTSTR = String;
function PathIsDirectory(pszPath: LPCTSTR): BOOL; external 'PathIsDirectory{#A}@Shlwapi.dll stdcall';
function PathFileExists(pszPath: LPCTSTR): BOOL; external 'PathFileExists{#A}@Shlwapi.dll stdcall';
function SetFileAttributes(lpFileName: LPCTSTR; dwFileAttributes: DWORD): BOOL; external 'SetFileAttributes{#A}@Kernel32.dll stdcall';
function GetFileAttributes(lpFileName: LPCTSTR): DWORD; external 'GetFileAttributes{#A}@Kernel32.dll stdcall';
function CopyFolder(const Source, Destination: String; const Overwrite: Boolean): Boolean;
var
ModifiedDestPath: String;
oFS: Variant;
adjAttr: BOOL;
begin
if not PathFileExists(Source) then Exit;
if not PathFileExists(Destination) then
begin
if not ForceDirectories(Destination) then Exit;
end else if not PathIsDirectory(Destination) then Exit;
ModifiedDestPath := AddBackslash(RemoveBackslash(Destination))
if (GetFileAttributes(ModifiedDestPath) and FILE_ATTRIBUTE_READONLY) = FILE_ATTRIBUTE_READONLY then
begin
adjAttr := SetFileAttributes(ModifiedDestPath, FILE_ATTRIBUTE_NORMAL);
if not adjAttr then Exit;
end;
////////////////////////////////////////////////////
oFS := CreateOleObject('Scripting.FileSystemObject');
try
Result := oFS.CopyFolder(Source, ModifiedDestPath, Overwrite);
except
ShowExceptionMessage();
finally
if adjAttr then SetFileAttributes(ModifiedDestPath, FILE_ATTRIBUTE_READONLY);
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssPostInstall: if IsComponentSelected('copyfolder') then CopyFolder(ExpandConstant('{app}\1'), ExpandConstant('{app}\2'), True);
end;
end;
Ребят может вы поможете, возникла такая проблема через SrepInside жму файлы, в батнике пишу arc.exe a -ep1 -dses --dirs -s; -lc- -di -i2 -r -msrep:l256+lzma:a1:mfbt4:d200m:fb128:mc1000:lc8 data.arc packeddata\* (как обычно я делал) но теперь выдаёт ошибку ISDone.dll http://img46.imageshack.us/img46/2295/5jwz.jpg Понимаю что не в тему, но может кто знает подскажите
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.