NSIS访问数据的问题

时间:2010-11-22 11:23:29

标签: qt nsis

我会尽量让自己变得清晰。

我用NSIS制作了一个安装程序。桌面上创建了一个图标,当我双击它时,应用程序就会很好地嵌入。 但是,在安装目录中我有其他目录(如“css”,其中包含“style.css”),似乎程序正在快捷方式目录中查找我的css文件( - >桌面)。 / p>

如何让程序在安装目录而不是桌面上查找?

感谢您的回答。


以下是我使用的代码:

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 个答案:

答案 0 :(得分: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?

答案 1 :(得分: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