Работна директория на програмата за деинсталиране на NSIS

Използвам NSIS, за да създам моите програми за инсталиране/деинсталиране и програмата за деинсталиране изглежда има странно поведение.

Не поставям инсталатора в $INSTDIR, той се намира в $INSTDIR/subdir/uninstall.exe (това е инсталатор на добавки за хост приложение).

Когато стартирам инсталатора тогава, той смята, че коренът на инсталацията на приложението е $INSTDIR/subdir вместо $INSTDIR. След това не може да намери всички файлове в subdir/*, тъй като вече е в subdir.

Ако преместя изпълнимия файл, той изглежда просто приема текущата директория като мястото, където е коренът на инсталацията на приложението. Мога да го преместя в $INSTDIR и всичко е наред.

Благодаря.


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


Отговори (1)


$INSTDIR в програмата за деинсталиране е просто директорията, в която е програмата за деинсталиране (не е задължително същата като текущата директория)

Ако можете просто да поставите програмата за деинсталиране в корена на инсталацията, това е най-добрият вариант, в противен случай трябва да направите нещо грозно като strcpy $instdir "$instdir\.." или да използвате дефиниране във всяко извикване на Delete/RMDir.

Като алтернатива, ако запишете директорията за инсталиране някъде в системния регистър по време на инсталацията, можете да я прочетете обратно в програмата за деинсталиране.

person Anders    schedule 12.05.2010