Рабочий каталог программы удаления NSIS

Я использую NSIS для создания своих установщиков / деинсталляторов, и деинсталлятор ведет себя странно.

Я не помещаю установщик в $ INSTDIR, он находится в $ INSTDIR / subdir / uninstall.exe (это установщик надстройки для хост-приложения).

Когда я запускаю установщик, он думает, что корнем установки приложения является $ INSTDIR / subdir вместо $ INSTDIR. Затем он не может найти все файлы в подкаталоге / *, поскольку он уже находится в подкаталоге.

Если я перемещаю исполняемый файл, он, кажется, просто принимает текущий каталог как место, где находится корень установки приложения. Я могу переместить его в $ INSTDIR, и все будет хорошо.

Спасибо.


person James Thigpen    schedule 12.05.2010    source источник


Ответы (1)


$ INSTDIR в программе удаления - это просто каталог, в котором находится программа удаления (не обязательно то же самое, что и текущий каталог)

Если вы можете просто поместить программу удаления в корень установки, это лучший вариант, в противном случае вам придется делать что-то уродливое, например strcpy $instdir "$instdir\..", или использовать определение в каждом вызове Delete / RMDir.

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

person Anders    schedule 12.05.2010