Рабочий каталог деинсталлятора NSIS - PullRequest
2 голосов
/ 12 мая 2010

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

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

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

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

Спасибо.

1 Ответ

5 голосов
/ 13 мая 2010

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

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

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

...