Вопрос Создание лога установки и удаление по нему

ilyaign86

Новичок
Добрый день! Никто не поможет? Использую в установщике ISDone для распаковки файлов из 7Z в установочную папку. Можно конечно прописать вручную удаление файлов в UninstallDelete но хотелось бы по умному, если вдруг там тысяча файлов или удалялись исключительно установленные файлы. После завершения распаковки установщик должен просканировать установочную папку или отслеживать распаковываемые файлы (ведь ISDone при распаковке отображает файлы которые распаковываются над полосой прогресса) и записать имена всех этих найденных файлов с полными путями в текстовик INSTALL.LOG в виде, допустим:

C:\Games\My Game\data\app\file1.dll
C:\Games\My Game\data\app\file2.dll
C:\Games\My Game\data\app\file3.dll
C:\Games\My Game\data\file3.dll
C:\Games\My Game\data\file4.dll
C:\Games\My Game\game.exe
C:\Games\My Game\game.dll

и так далее, подобно этому. А при деинсталляции, файлы и папки последовательно читаются из этого лога и удаляются. Реально ли такое?
 

LexBell

Борода
Супер модератор
Вполне. первое, что приходит в голову - писать выводимые файлы в стринглист, после окончания сохранить его в файл с нужным названием. При удалении, так-же в стринглист загрузить список из файла и соответствующими функциями удалить пофайлово.
Имя файла светится в ProgressCallback, каким-то образом нужно будет отслеживать, чтобы не писался один и тот-же файл несколько раз, глобальная переменная должна решить этот вопрос. Либо потом почистить лист от дублей, но их будет количество ужасное просто, может оперативки не хватить в особо запущеных случаях. Установка и удаление при этом, здорово замедлятся.
 
Последнее редактирование:

ilyaign86

Новичок
Почему то вспомнился анекдот:
- Треск в двигателе. Помогите разобраться в причинах и какие могут быть последствия?
- Причин может быть множество , а последствия могут быть разными.
- Спасибо.

Я не программист, и другие хобби в жизни, поэтому не стоит употреблять "стринглист" "ProgressCallback" и прочие ругательные слова, которые другим ничего не говорят. Я могу готовый скрипт подредактировать, а не с нуля писать. Раз нельзя, так нельзя, руками напишу файлы.
 

ilyaign86

Новичок
Пробуй. пояснения добавил, разберешься, надеюсь.
Проблема в деинсталляторе, файлы не удаляются. То ли в СтрингЛист не записывается, то ли еще где то косяк. Ошибок причём никаких не выводится.

код деинсталлятора:

code_language.pascal:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);

var

  i : Integer;

begin

  if (CurUninstallStep = usUninstall) then

  ULog := FileExists(ExpandConstant('{app}\INSTALL.LOG')); // лог забирать нужно сейчас,потом его может не быть

  if ULog then // если файл лога есть, создаем лист, в который грузим список файлов

  begin

    unins_list := TStringList.Create;

    unins_list.LoadFromFile(ExpandConstant('{app}\INSTALL.LOG'));

    for i := 0 to unins_list.Count-1 do DeleteFile(unins_list); // удаляем файлы из списка

    unins_list.Free;

  end;

end;
 
Последнее редактирование модератором:

LexBell

Борода
Супер модератор
code_language.pascal:
DeleteFile(unins_list[i])
пропустил. форум порезал i в квадратных скобках, видимо принял за незакрытый тег
 

ilyaign86

Новичок
D:\Games\Buena Vista Games\Chicken Little\binkw32.dll
D:\Games\Buena Vista Games\Chicken Little\data\scripts\billboard.adb
D:\Games\Buena Vista Games\Chicken Little\data\scripts\dodgeballGoosey.adb
D:\Games\Buena Vista Games\Chicken Little\data\scripts\EnemyChickToy.adb
D:\Games\Buena Vista Games\Chicken Little\data\scripts\Flight4Alien.adb
D:\Games\Buena Vista Games\Chicken Little\data\scripts\HomerunChanterRunt.adb
D:\Games\Buena Vista Games\Chicken Little\data\scripts\HomerunPlayerA.sdb
D:\Games\Buena Vista Games\Chicken Little\data\scripts\mo_PongGoalTrigger.adb
D:\Games\Buena Vista Games\Chicken Little\data\scripts\ParticleEffectGen.adb
D:\Games\Buena Vista Games\Chicken Little\data\scripts\particleTrg.adb
D:\Games\Buena Vista Games\Chicken Little\data\scripts\spinner.adb
D:\Games\Buena Vista Games\Chicken Little\data\tables\SurfSurf.tbd
D:\Games\Buena Vista Games\Chicken Little\data\worlds\SchoolYard\player.var
D:\Games\Buena Vista Games\Chicken Little\data\worlds\transtube\transtube.adb
D:\Games\Buena Vista Games\Chicken Little\data_dx\chars.hog
D:\Games\Buena Vista Games\Chicken Little\data_dx\Cutscene\BigGame\BGM01.cut
D:\Games\Buena Vista Games\Chicken Little\data_dx\Cutscene\BigGame\BGP03.cut
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\1\1min_chick_demo.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\3\30sec_chick_demo.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\a\aCannonEnd.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\a\aFriendsGone.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\a\aGooseyDoor.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\a\alienShip.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\a\ArriveField.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\a\avlogo.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\b\bCannonStart.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\b\beamAlt.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\b\BellTower.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\b\bFriendsScared.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\b\bGooseyMad.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\b\BigGame.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\b\bvg.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\c\Champion.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\c\CL_Ship.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\c\corn2cut.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\c\corn3cut.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\dummy.txt
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\e\endcreds.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\e\EnterShip.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\e\escape.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\f\Final.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\f\FireTruck.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\f\FishFollow.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\f\FishReunite.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\f\FleeField.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\f\Flt2_end.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\f\Flt3_End.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\f\Flywindow.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\f\FoxyStop.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\f\FoxyUniform.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\g\GotUniform.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\i\Intro.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\i\InTrouble.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\j\Judgement.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\l\Locker.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\m\mapRoom.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\m\Movie.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\p\P2Cannon.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\p\p3Cannon.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\p\PanelFish.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\r\resolveIssues.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\r\Reunite.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\r\ringBell.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\r\RocketBoss.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\r\runtbucket.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\r\RuntFalls.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\s\SaveBuck.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\s\school.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\s\ShipApproach.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\s\Soda.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\t\TakeCar.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\t\TimeOut.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\fmv\t\tubeRocket.bik
D:\Games\Buena Vista Games\Chicken Little\data_dx\frontend\alienhud.dbl
D:\Games\Buena Vista Games\Chicken Little\data_dx\frontend\NLchicklogo.dbl
D:\Games\Buena Vista Games\Chicken Little\data_dx\replace\alienfightership3.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\replace\car_cheetah.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\replace\car_cheetah_driver.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\replace\Chanter_Runt.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\replace\Chanter_TallCat.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\replace\DroneGrndGlow.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\replace\EnemyNannyBot.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\replace\flight4alien.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\replace\HomerunGoosey.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\replace\Pong_Vehicle.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\replace\spacecannon.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\replace\TatersPlayerA.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\replace\uniformPants.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\shell\wloading.dbl
D:\Games\Buena Vista Games\Chicken Little\data_dx\sound.hog
D:\Games\Buena Vista Games\Chicken Little\data_dx\stream\dialog.hog
D:\Games\Buena Vista Games\Chicken Little\data_dx\stream\music.hog
D:\Games\Buena Vista Games\Chicken Little\data_dx\weapons\yoyo.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\aliensu1\aliensu1.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\aliensu2\aliensu2.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\antigrav\antigrav.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\BballPractice\BballPractice.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\beamChase\beamChase.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\beamChase\beamChase.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\BigGame\BigGame.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\bosstube\bosstube.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\cannon\cannon.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\cornmaze\cornmaze.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\dodgeball\dodgeball.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\Final_Boss\Final_Boss.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\flight1\flight1.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\flight2\flight2.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\flight3\flight3.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\flight4\flight4.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\GooseyChase\gooseychase.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\intro\Intro.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\intro\Intr.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\RT_FireTruck\ProgressMap.dbl
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\RT_FireTruck\RT_FireTruck.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\RT_ToCLsHouse\ProgressMap.dbl
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\RT_ToCLsHouse\RT_ToCLsHouse.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\RT_ToCLsHouse\RT_ToCLsHouse.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\SchoolYard\schoolyard.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\space1\space1.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\space2\space2.DBL
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\space2\space2.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\theatre\theatre.OA
D:\Games\Buena Vista Games\Chicken Little\data_dx\worlds\townsquare\townsquare.OA
D:\Games\Buena Vista Games\Chicken Little\Launcher.exe
D:\Games\Buena Vista Games\Chicken Little\Support\Manual\img\question.jpg

сам файл лога покажи
 

ilyaign86

Новичок
Пробовал и твой скрипт и своё добавил - прописываются полные пути до файлов
 

LexBell

Борода
Супер модератор
нужно залогировать процесс, чтобы понять, что происходит. Могу еще предложить вот так сделать - вместо
code_language.pascal:
DeleteFile(unins_list[i]);
использовать
code_language.pascal:
DelayDeleteFile(unins_list[i], 2);
она пытается до трех раз удалитть файл, если сразу не удалось, с задержкой в 250 милисекунд.
 

ilyaign86

Новичок
Выловил кое-какую вещь:
Определяем строки от 0 до последней for i := 0 to unins_list.Count-1 do

и если в DeleteFile(unins_list[0]); указать конкретную строку, например нулевую, то файл из этой строки удалится без проблем.
 

ilyaign86

Новичок
В общем не прокатит создание Лога. Еще косяк есть с распаковкой файлов, т.к. имена файлов записываются из параметра CurrentFile, а ISDone когда распаковывает, по крайней мере 7Z архивы, пропускает и не показывает мелкие файлы в параметре CurrentFile. Я начал просматривать ЛОГ, а там несколько десятков мелких (~50kb) файлов нет.
 
Сверху