WedX - журнал о программировании и компьютерных науках

InnoSetup - копировать файлы перед установкой

Как мы можем копировать, перемещать, переименовывать пользовательские файлы перед установкой?

Мы можем легко удалить файлы, используя раздел [InstallDelete]:

[InstallDelete]
Type: files; Name: "{app}\SomeFile.exe";

Можем ли мы копировать, переименовывать подобным образом?

РЕДАКТИРОВАТЬ:

Я пытался сделать это в разделе [Файлы], но во время компиляции получаю ошибку, потому что исходный файл не существует:

[Files]
Source: "{app}\SomeFile.exe"; DestDir: "{app}\SomeDir\SomeFile.exe"; 
16.05.2013

  • Если исходный файл не существует, как InnoSetup должен включить его в установку? 16.05.2013
  • @Thorsten, вы можете использовать флаг external, но это плохая идея, даже если бы она работала. 16.05.2013
  • @Thorsten: я не хочу включать этот файл в установку. Это файлы сохранения пользователя, которые я хочу переместить в другой подкаталог приложения (если файлы существуют). 16.05.2013
  • Да, это то, о чем я говорил :-) Как вы пытались, компилятор ожидает, что файлы будут присутствовать на вашем локальном жестком диске, чтобы включить их в настройку. 16.05.2013

Ответы:


1

Для копирования файлов вы можете использовать раздел [Files], но я не думаю, что есть способ перемещения или переименования операций в отдельном разделе, поэтому я бы посоветовал вам использовать для этого раздел [Code].

Вот пример кода для операций перемещения и переименования. Оба они используют функцию RenameFile, так как внутри это одна и та же операция:

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
  begin
    // move file
    if not RenameFile(ExpandConstant('{app}\SomeDir\SomeFile.exe'), ExpandConstant('{app}\SomeFile.exe')) then
      MsgBox('File moving failed!', mbError, MB_OK);
    // rename file
    if not RenameFile(ExpandConstant('{app}\SomeFile.exe'), ExpandConstant('{app}\RenamedSomeFile.exe')) then
      MsgBox('File moving failed!', mbError, MB_OK);
  end;
end;
16.05.2013
  • Спасибо! Я просто искал, какую функцию [Код] использовать для размещения кода перемещения. процедура CurStepChanged(CurStep: TSetupStep); будет работать нормально. Более того, я могу предупредить пользователя, что я переместил его файлы сохранения. 16.05.2013
  • Имейте в виду, что пользовательские файлы должны находиться в одной из папок {user*}, и вы не можете полагаться на то, что программа установки переместит их за вас. Установщик запускается только одним пользователем, но ваше приложение могут использовать несколько пользователей. Само приложение должно нести ответственность за управление ими. 17.05.2013
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

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


    Для любых предложений по сайту: [email protected]