Inno Setup: Как работать с индикатором выполнения в секции [UninstallDelete]? - PullRequest
2 голосов
/ 19 июня 2019

Я использую Inno Setup, чтобы сделать установщик для моего приложения.Когда пользователь удаляет приложение, я хочу удалить свою пользовательскую папку в папке Program Data, моя папка имеет большой размер (около 15 ГБ), поэтому для удаления этой папки я использую раздел [UninstallDelete]:

[UninstallDelete]
Type: filesandordirs; Name: "{commonappdata}\testFolder"

Но когдаInno Setup попадает в секцию [UninstallDelete], индикатор выполнения отображается на 20% и останавливается в этом положении на долгое время, затем он «подпрыгивает» до 100%.
Так как сделать так, чтобы индикатор выполнения увеличивался стабильно, когдаудалить приложение?
Спасибо!

1 Ответ

1 голос
/ 19 июня 2019

Не думаю, что это действительно возможно.

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


Попробуйте удалить (не перезаписывать) папку в проводнике Windows. И проверьте, как долго операция находится в фазе «Расчет» .

enter image description here

В моем тесте это заняло 1/3 времени удаления.


Вместо того, чтобы пытаться показать реальный прогресс, вы можете отобразить неопределенный индикатор хода выполнения / выделения (то есть, как это делает Проводник выше). И, возможно, отобразить количество удаленных файлов, чтобы пользователь мог видеть, что что-то происходит.


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

Это может занять несколько минут ...


Ваш следующий вопрос:
Inno setup - индикатор выполнения не отображается при удалении

...