2010-11-22 1 views
1

최대한 명확하게하려고 노력할 것입니다.데이터에 액세스하는 NSIS 문제

NSIS로 설치 프로그램을 만들었습니다. 바탕 화면에 아이콘이 만들어졌고 두 번 클릭하면 응용 프로그램이 제대로 실행됩니다. 그러나 설치 디렉토리에 "style.css"가 들어있는 "css"와 같은 다른 디렉토리가 있으며 프로그램이 바로 가기 (-> desktop) 디렉토리에서 내 CSS 파일을 찾고있는 것으로 보입니다.

어떻게 프로그램을 데스크톱이 아닌 설치 디렉토리에서 볼 수 있습니까?

답장을 보내 주셔서 감사합니다. 나는 (라인 3) "$ INSTDIR은"바로 가기가 전혀 생성되지 않습니다 할 수있는 outpath을 변경하는 경우

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 

: 여기


은 내가 사용하는 코드입니다. 이 코드를 사용하면 바로 가기가 만들어 지지만 "시작"매개 변수가 바탕 화면으로 설정됩니다.

답변

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

"enter"를 너무 빨리 누르면 죄송합니다. 게시물을 완성하지 못했습니다.) – 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