Автор: Angel_Smerti
Дата сообщения: 21.12.2007 23:21
Люди подскажите, пожалуйста, я нашел скрипт [more=для сохранения строки в host и ее резервное копирование]
[Code]
//О сохранении бэкапа пользователя уведомлять не будем
//Создаем резервную копию в начале установки
procedure CurPageChanged(CurPageID: Integer);
var
//определяемые строки для сохранения резервных файлов
s1, s2:string;
begin
If CurPageID=wpInstalling then
begin
s1:=ExpandConstant('{sys}')+'\drivers\etc\host';
s2:=ExpandConstant('{sys}')+'\drivers\etc\Backup_Host_File';
If FileExists(s1)
then
begin
CreateDir(s2);
FileCopy(s1, s2+'\host', True);
end;
end;
end;
//Если программа устанавливается повторно, и был зарезервирован файл 'host', то перезапись файла в резервной папке не осуществится
//Дописываем строку в 'host' на завершающем этапе установки
procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssPostInstall
then
begin
//Строка будет дописываться под последней существующей
SaveStringToFile(ExpandConstant('{sys}')+'\drivers\etc\host', #13 + 'требуемая строка', True);
end;
end;
//Деинсталляция. В процессе удаления происходит восстановление требуемого файла и полное удаление резервной папки
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
s1, s2, s3:string;
begin
case CurUninstallStep of
usPostUninstall:
begin
s1:=ExpandConstant('{sys}')+'\drivers\etc\Backup_Host_File\host';
s2:=ExpandConstant('{sys}')+'\drivers\etc';
If FileExists(s1)
then
begin
FileCopy(s1, s2+'\host', False);
begin
s3:=ExpandConstant('{sys}')+'\drivers\etc\Backup_Host_File';
If DirExists(s3)
then
begin
//Очень опасная функция! Удаляет беспощадно файлы в указанной папке вместе с папкой!!!
DelTree(ExpandConstant('{sys}')+'\drivers\etc\Backup_Host_File', True, True, True);
end;
end;
end;
end;
end;
end;
[/more].
Попробовал исправить на свои значения для бэкапа папок, [more=вот что из этого получилось]
[Code]
//О сохранении бэкапа пользователя уведомлять не будем
//Создаем резервную копию в начале установки
procedure CurPageChanged(CurPageID: Integer);
var
//определяемые строки для сохранения резервных файлов
s1, s2:string;
begin
If CurPageID=wpInstalling then
begin
s1:=ExpandConstant('{userdocs}')+'\EA Games\The Sims 2';
s2:=ExpandConstant('{userdocs}')+'\EA Games\The Sims 2_old';
If FileExists(s1)
then
begin
CreateDir(s2);
FileCopy(s1, s2+'\The Sims 2', True);
end;
end;
end;
//Если программа устанавливается повторно, и был зарезервирован файл 'host', то перезапись файла в резервной папке не осуществится
//Дописываем строку в 'host' на завершающем этапе установки
procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssPostInstall
then
begin
//Строка будет дописываться под последней существующей
SaveStringToFile(ExpandConstant('{userdocs}')+'\EA Games\The Sims 2', #13 + 'требуемая строка', True);
end;
end;
//Деинсталляция. В процессе удаления происходит восстановление требуемого файла и полное удаление резервной папки
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
s1, s2, s3:string;
begin
case CurUninstallStep of
usPostUninstall:
begin
s1:=ExpandConstant('{userdocs}')+'\EA Games\The Sims 2_old';
s2:=ExpandConstant('{userdocs}')+'\EA Games';
If FileExists(s1)
then
begin
FileCopy(s1, s2+'\The Sims 2', False);
begin
s3:=ExpandConstant('{userdocs}')+'\EA Games\The Sims 2_old';
If DirExists(s3)
then
begin
//Очень опасная функция! Удаляет беспощадно файлы в указанной папке вместе с папкой!!!
DelTree(ExpandConstant('{userdocs}')+'\EA Games\The Sims 2_old', True, True, True);
end;
end;
end;
end;
end;
end;
[/more].
Где {userdocs}\EA Games\The Sims 2_old - это должно быть бэкап папки с сохранениями от игры в Моих Документах, а {userdocs}\EA Games\The Sims 2 - это сама папка с сохранениями. Значения то в скипте я поменял, но при запуске инсталлятора не происходит резервного копирования папки The Sims 2. Подскажите, где я ошибся, и вообще можно ли переделать этот скрипт под мои цели (мне нужно, чтобы при запуске инсталлятора он проверил, присутствует ли в Моих Документах эти папки \EA Games\The Sims 2 и если они присутствуют, то сделал бы бэкап такого типа \EA Games\The Sims 2_old, и это все необходимо делать без участия пользователя. При деинсталляции желательно чтобы все вернулось к первоначальному состоянию, т. е. как было до установки игры).