Jump to content
Korean Random

ferrat

User
  • Posts

    7
  • Joined

  • Last visited

Posts posted by ferrat

  1. Edited by ferrat

    Цитата

    А если пользователь не знает о существовании деинсталлятора и постоянно накатывает поверх того, что у него есть? Тогда индекс может достигнуть и 50, и 100, и больше. Нужна ли такая куча бекапов пользователю, пусть он и не знает о ней?
    В таком случае лучше хранить всегда один экземпляр бекапа - последний.

    Описанное вами реализовать не сложно. Вопрос в том, действительно ли такая реализация вам нужна)

     

    Тогда его проблемы, если читать не умеет предостережения и инструкции при установке каких либо пакетов. 

     

    Хотя даже при таком варианте это меня не спасает от остатка лишних файлов после деинсталляции.

     

    По сути нужно было такое:

     

    1) есть игра

    2) есть мод , который ставится на чистую игру.

     

    И так:

     

    Дабы не заниматься тратой времени и не сравнивать кучу файлов, инстал собирается с папок, выборочная установка.

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

     

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

     

    И тут ситуация вопроса , как все сделать что бы игра после удаления мода приобрела свое перевальное состояние файлов и папок. 

     

    Это либо делать полный лист перед установкой папки игры и копируя встречающиеся файлы игры раз бекапить а второй раз перезаписывать, но  дополнительные файлы не входящие в созданный лист игры копировать но не бекапить и перезаписывать, тогда при удалении мода мы , если все верно, получим первоначальное состояние папки игры .

     

    Может немного сумбурно, но попробовал описать проблему ))) 

     

    И теперь , если этот набор слов, был хоть как то понят, есть ли вариант это реализовать кодом ? И сложно ли это? Если нет, то возможно ли такое в вашем исполнении маэстро ? 

     

     

  2. приветствую гуру кодописания ))

    Кто то может подсобить с изменением кода. Вот есть код резервного копирования, может кто то изменить так что бы , если встречается еще один файл с таким же именем, то он бекапился на цифру больше, к примеру mmm_back, mmm_back_01, mmm_back_02 и тд и что бы они так же при деинсталляции восстанавливались. По логике первый бекап и есть оригинал, так что достаточно его и восстановить при деинсталяции остальное просто удалить или что бы не мудрить восстанавливать от последнего к первому.

    Ну или может у кого готовый рабочий есть под такую задачу, вдруг...:beer:

     

    
    
    procedure CreateBackup;
    var
    srcFile, destFile: string;
    begin
    srcFile:= ExpandConstant(CurrentFileName);
    destFile:= srcFile + '.gom_bak';  /// тут по умолчанию расширение ' .bak
    DeleteFile(destFile);
    RenameFile(srcFile, destFile);
    end;
    
    procedure RestoreBackup(backupDir: string);
    var
    srcFile, destFile: string;
    FSR, DSR: TFindRec;
    FindResult: Boolean;
    APath: string;
    begin
    APath := AddBackslash(backupDir);
    FindResult := FindFirst(APath + '*.gom_bak', FSR); /// тут по умолчанию расширение '*.bak
    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)-8); ///тут указано количество символов удаляемых с названия при восстановлении оригинального файла. По умолчанию -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;
    
    
    procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
    begin
    if CurUninstallStep = usPostUninstall then
    begin
    RestoreBackup(ExpandConstant('{app}'))
    
    end;
    end;
    
    
    

  3. Не важно, хочет он ил нет, может или нет, тугодум или нет, если вам таким великим нехочухам и гуру кодописания в лом, то просто пройдите мимо.

     

    не нужно ставить себя выше других.  Каждый в чем то хорош, а в чем то нет. Вам разве ни когда не нужна была чья то помощь, главное оглянуться назад....  

     

    Как говорил Леопольд: "Давайте жить дружно."  :bajan2:

    • Upvote 3
  4. Не могу понять этот параметр

     

    [Setup]: MergeDuplicateFiles

    Как он работает на практике.

     

    Если у меня в одной папке находятся 10 одинаковых по имени файлов, во второй тоже такие же файлы в компонентах указано 1) установить, 2 ) установить но эти файлы должны установиться сначала первые , поверх вторые 

     

    мне надо использовать этот параметр YES или необходимо ставить NO 

     

    В справке написано так , что понять просто не реально. 

     

    Какие одинаковые файлы считаются одинаковыми , по имени , по размеру, по содержимому 

     

    Ищет он по всем источникам одинаковое или только по группам .

     

    Кто то может объяснить

     

    Спасибо.

     

  5. И еще вопрос. Изменил. через оболочку размеры в окон инсталлятора, все красиво получилось, как и хотел, но одна беда, при установке, все окошки одинакового размера, но финальное о завершении установки остается первоначального размера, хотя текст и картинки изменены. ,то есть, по какой та причине оно не остается измененного размера.

     

    Кто может подсказать, как это вылечить ?

  6. Добрый вечер. Так как я в этих паскалях полный ноль, наберусь смелости, попросить, если это не трудно.

    просто само собой так вышло, что понадобилось в коем то веке это долбанное резервирование файлов.

     

    Опишу задачу. 

     

    1) перед установкой программы (будем это так называть) Создается список файлов и папок каталога назначения.

    2) По этому списку, при установке, сопоставляются файлы, если такой файл есть всписке, делать бекап, если такой файл повторно перезаписывается во время установки, не делать бекап, если вайла нет в списке тоже не делать бекап. 

    3) при деинсталяции восстанвить все фалы с бекапов.

     

    Второй вариан, если первый сложно реализовать, но если нет , то он предпочтительней. Многим будет полезен.

     

    Второй вариант, просто скрипт с возможностью указать, каике папки и файлы , куда забэкпить , к примеру 

     

    Берем перед установкой из папки назначения папку 1 и копируем в папку app\backut\1

    Берм папку 2 и копируем в папку бекам , как файлы и подкаталоги в ней содержащиеся. 

     

    после деинсталяции из папки бэкап  (возможность указать путь в скрипте) все положить в папку app, а папку бэкап удалить. 

     

    Очень нужно, Заранее спасибо. 

     

    Прошу ногами не бить, я в программировании , как блоха в космос пытающаяся найти собаку кровушки нажраться, а космос большой. 

     

    Спасибо.

×
×
  • Create New...