Nano Hash - криптовалюты, майнинг, программирование

Резервное копирование файлов и восстановление их при удалении с помощью InnoSetup?

Рассмотрим следующее:

  • У меня есть два файла, например XXX.txt и YYY.txt

  • Я хочу установить их в папку (допустим files), в которой уже есть XXX.txt и YYY.txt файлы

  • Я хочу сделать резервную копию двух исходных файлов, переименовав их в XXX.txt.backup и YYY.txt.backup

  • При удалении я хочу восстановить два файла в исходное состояние.

Как я могу добиться этого с помощью Inno Setup?

20.08.2010

  • Что вы хотите, чтобы произошло, если установщик уже найдет XXX.txt.backup в папке - пропустить резервную копию? Перезаписать старую резервную копию? 21.08.2010

Ответы:


1

Добавлять

[Files]
; Backup Function_Template
Source: "{app}\XXX.txt"; DestDir: "{app}"; DestName: "XXX.txt.bkup"; Flags: external skipifsourcedoesntexist uninsneveruninstall

Это переместит существующий файл, а флаги предотвратят его удаление. Теперь в коде можно поставить

[Code] 
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
  OldFile: string;
begin
  case CurUninstallStep of    
    usPostUninstall:
      begin
        OldFile := ExpandConstant('{app}\XXX.txt.bkup');
        if FileExists(OldFile) then
          RenameFile(OldFile, ExpandConstant('{app}\XXX.txt'));
      end;
  end;
end;
15.11.2010

2
Source: "{app}\XXX.txt"; DestDir: "{app}"; DestName: "XXX.txt.bkup"; Flags: external skipifsourcedoesntexist uninsneveruninstall

Похоже, это не сработало, поскольку «Компилятор добавит путь к исходному каталогу вашей установки, если вы не укажете полное имя пути».

Однако я только что обнаружил, что это работает нормально! Я отказался от «внешнего» флага.

19.09.2012
  • Добро пожаловать в StackOverflow. Поскольку это не ответ, а продолжение другого ответа, можете ли вы вместо этого опубликовать его в качестве комментария? Если ответ неверный, вы можете отредактировать его, добавив подходящее описание, и он будет одобрен более опытным пользователем. Спасибо 21.09.2012

  • 3

    Ну, может быть, всплывающее окно с сообщением «Уже есть резервная копия XXX.txt.Вы действительно хотите перезаписать ее?»

    22.08.2010
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..