2010-11-22 5 views
1

Я постараюсь сделать все возможное как можно яснее.Проблема NSIS при доступе к данным

Я сделал программу установки с NSIS. Значок был создан на рабочем столе, и когда я дважды щелкнул его, ядро ​​приложения хорошо. Однако в каталоге установки у меня есть другие каталоги (например, «css», который содержит «style.css»), и кажется, что программа ищет мой css-файл в каталоге ярлыка (-> desktop).

Как я мог сделать программу в каталоге установки, а не на рабочем столе?

Спасибо за ваши ответы.


Вот код, который я использовал:

Section "Shortcuts" 
SectionIn 2 
SetOutPath "$SMPROGRAMS\MyApp" 
CreateShortCut "$SMPROGRAMS\MyApp\MyApp.lnk" "$INSTDIR\MyApp.exe" 
SetOutPath "$INSTDIR" 
CreateShortCut "$DESKTOP\MyApp.lnk" "$INSTDIR\MyApp.exe" 
SectionEnd 

Если я изменяю outpath (линия 3) до "$ INSTDIR", ярлык не создается вообще. Если я использую этот код, ярлык создается, но параметр «start in» установлен на рабочий стол.

ответ

2

Проблема в этом случае заключается в том, что ваше приложение использует относительные пути без их квалификации; простое решение, чтобы иметь ярлык указать рабочий каталог: (это кажется странным, что SetOutPathCreateShortCut изменяет, но руководство говорит, что это делает)

SetOutPath "$INSTDIR" 
CreateShortCut "$DESKTOP\MyApp.lnk" "$INSTDIR\MyApp.exe" # etc. 

Правильное решение, чтобы все пути абсолютными; вы отметили его как qt, поэтому я предполагаю, что вы используете Qt и C++. Найдите вокруг «абсолютный путь qt» и тому подобное. Qt-interest Archive - How to get an application's absolute path?

+0

Спасибо, я нашел это решение тоже, но есть еще одна проблема сейчас: CreateShortcut "$ SMPROGRAMS \ MyApp \ MyApp.lnk" "$ INSTDIR \ MyApp.exe" создать ярлык в списке программ, но У меня такая же проблема, как раньше, за исключением того, что на этот раз SetOutPath «$ INSTDIR» ничего не меняет ... Любая идея? – Yoot

+0

Еще одна проблема сейчас? Какая проблема? Если после этого все происходит не так, снова используйте «SetOutPath», чтобы вернуться туда, где он был. –

+0

Извините, я нажал «войти» слишком быстро, я не закончил сообщение;) – Yoot

0
Section "Shortcuts" 
SectionIn 2 
CreateDirectory "$SMPROGRAMS\MyApp" #CreateShortCut does not create directories 
SetOutPath "INSTDIR" 
CreateShortCut "$SMPROGRAMS\MyApp\MyApp.lnk" "$INSTDIR\MyApp.exe" 
SetOutPath "$INSTDIR" 
CreateShortCut "$DESKTOP\MyApp.lnk" "$INSTDIR\MyApp.exe" 
SectionEnd