2010-11-22 4 views
1

Je vais essayer de me rendre aussi clair que possible.Problème d'accès aux données de NSIS

J'ai fait un programme d'installation avec NSIS. Une icône a été créée sur le bureau et lorsque je double-clique dessus, l'application se comporte bien. Cependant, dans le répertoire d'installation j'ai d'autres répertoires (comme "css" qui contient "style.css"), et il semble que le programme recherche mon fichier css dans le répertoire du raccourci (-> desktop).

Comment est-ce que je pourrais faire regarder le programme dans le répertoire d'installation plutôt que dans le bureau?

Merci pour vos réponses.


Voici le code je:

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 

Si je change la outpath (ligne 3) à "$ INSTDIR", le raccourci est pas créé du tout. Si j'utilise ce code, le raccourci est créé mais le paramètre "start in" est défini sur le bureau.

Répondre

2

Le problème dans ce cas est que votre application utilise des chemins relatifs sans les qualifier; la solution simple est d'avoir le raccourci spécifier le répertoire de travail: (il semble étrange que le SetOutPath modifie la CreateShortCut, mais le manuel dit qu'il fait)

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

La bonne solution est de faire tous les chemins absolus; vous l'avez étiqueté comme qt donc je présume que vous utilisez Qt et C++. Cherchez autour de "qt chemin absolu" et des choses comme ça - par exemple. Qt-interest Archive - How to get an application's absolute path?

+0

Merci, je l'ai trouvé cette solution aussi, mais il y a un autre problème maintenant: createshortcut "$ SMPROGRAMS \ MyApp \ MyApp.lnk" "$ INSTDIR \ MyApp.exe" créer le raccourci dans la liste des programmes, mais J'ai le même problème qu'avant, sauf que cette fois SetOutPath "$ INSTDIR" ne change rien ... Une idée? – Yoot

+0

Un autre problème maintenant? Quel problème? Si ce n'est pas le cas, utilisez SetOutPath à nouveau pour revenir à l'endroit où il se trouvait. –

+0

Désolé j'ai pressé "entrer" trop vite, je n'ai pas fini la poste;) – 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