#installation #inno-setup
#установка #inno-setup
Вопрос:
У меня есть каталог ( Configurationfiles
), содержащий 84 файла. Один из этих файлов содержит данные, которые пользователь изменит ( UserData.json
) . Этот файл может быть или не быть там, но если он есть, я не хочу потерять эти данные и пытаюсь сохранить установку удобной для пользователя.
Я пытаюсь изменить существующий сценарий установки, который выполняет все следующие действия:
- Если в каталоге нет файлов, скопируйте их все
- Если есть файлы, перезапишите все файлы, кроме
UserData.json
- если
UserData.json
отсутствует, скопируйте значение по умолчаниюUserData.json
- Если
UserData.json
присутствует, предложите пользователю перезаписатьUserData.json
, если да, перезаписать, если нет, не
В настоящее время все файлы копируются, несмотря ни на что, и я никогда не получаю запрос на перезапись. Это то, что у меня есть до сих пор:
#define ExcludeFiles "UserData.json"
Source: ....PROV4200701BIN*.*; Excludes: {#ExcludeFiles }; DestDir: {app}BIN;
Flags: ignoreversion recursesubdirs skipifsourcedoesntexist;
Source: ....PROV4200701BINConfigurationfilesUserData.json;
DestDir: {app}BINConfigurationfiles;
Flags: ignoreversion onlyifdoesntexist confirmoverwrite skipifsourcedoesntexist;
Я думаю, что у меня что-то неправильно настроено с флагами. Но я не уверен. Кто-нибудь видит, где я ошибаюсь?
Ответ №1:
Вы никогда не сможете получить подтверждение, onlyifdoesntexist
так как confirmoverwrite
предотвращает когда-либо какое-либо действие.
Я не думаю, что вы правы с «все файлы копируются независимо от того». Когда я тестирую ваш скрипт, я получаю:
2020-09-26 16:51:21.625 — Запись файла —
2020-09-26 16:51:21.626 Имя файла Dest: C:UserspimpoAppDataLocalMy ProgramBINConfigurationfilesUserData.json
2020-09-26 16:51:21.626 Временная метка нашего файла: 2020-09-26 16:49:30.000
2020-09-26 16:51:21.626 Файл Dest существует.
2020-09-26 16:51:21.626 Пропуск из-за флага «onlyifdoesntexist».
Если вы удалите onlyifdoesntexist
, ваш скрипт должен делать то, что вы хотите.
2020-09-26 16:57:41.066 — Запись файла —
2020-09-26 16:57:41.067 Dest filename: C:UserspimpoAppDataLocalMy ProgramBINConfigurationfilesUserData.json
2020-09-26 16:57:41.067 Временная метка нашего файла: 2020-09-26 16:49:30.000
2020-09-26 16:57:41.067 Файл Dest существует.
2020-09-26 16:57:41.067 Временная метка существующего файла: 2020-09-26 16:49:30.000
2020-09-26 16:57:41.067 Окно сообщения (Да/Нет):
C:UserspimpoAppDataLocalMy ProgramBINConfigurationfilesUserData.jsonФайл уже существует.
Вы хотите, чтобы программа установки перезаписала его?
2020-09-26 16:57:43.055 Пользователь выбрал Да.
2020-09-26 16:57:43.055 Установка файла.
2020-09-26 16:57:43.062 Успешно установил файл.
Возможно, вы захотите удалить ignoreversion
too, поскольку это не влияет на .json
файлы. Это может сбить с толку других. Это skipifsourcedoesntexist
также сомнительно.
Комментарии:
1. Спасибо, я удалил флаг (onlyifdoesntexsist), и он работает правильно.