2010-11-22 60 views
1

我會盡量讓自己變得儘可能清楚。訪問數據的NSIS問題

我用NSIS製作了一個安裝程序。桌面上創建了一個圖標,當我雙擊該圖標時,應用程序就會啓動。 但是,在安裝目錄中我有其他目錄(如「css」,其中包含「style.css」),似乎該程序正在快捷方式( - >桌面)的目錄中查找我的css文件。

我該如何讓程序在安裝目錄中而不是在桌面上?

感謝您的回答。


這裏是我使用的代碼:

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 

如果我更改爲 「$ INSTDIR」,該快捷方式不是在所有創建(3號線)outpath中。如果我使用此代碼,則創建快捷方式,但「開始」參數設置爲桌面。

回答

2

在這種情況下的問題是,您的應用程序正在使用相對路徑而沒有限定它們;簡單的解決辦法是讓快捷方式指定工作目錄:(這似乎奇怪的是,SetOutPath改變CreateShortCut,但手冊上說它)

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 2010-11-22 12:36:45

+0

現在的另一個問題?什麼問題?如果之後的事情發生在錯誤的地方,請再次使用「SetOutPath」返回到原來的位置。 – 2010-11-22 12:38:11

+0

對不起,我按了「輸入」太快,我沒有完成該職位;) – Yoot 2010-11-22 12:40:44

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