【问题标题】:NSIS problem accessing dataNSIS 访问数据的问题
【发布时间】:2010-11-22 11:23:28
【问题描述】:

我会尽量让自己清楚。

我用 NSIS 做了一个安装程序。在桌面上创建了一个图标,当我双击它时,应用程序启动良好。 但是,在安装目录中我有其他目录(例如包含“style.css”的“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 

如果我将输出路径(第 3 行)更改为“$INSTDIR”,则根本不会创建快捷方式。如果我使用此代码,则会创建快捷方式,但将“start in”参数设置为桌面。

【问题讨论】:

    标签: qt nsis


    【解决方案1】:

    这种情况下的问题是您的应用程序使用了相对路径而没有限定它们;简单的解决方案是让快捷方式指定工作目录:(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?

    【讨论】:

    • 谢谢,我也找到了这个解决方案,但现在还有另一个问题: CreateShortCut "$SMPROGRAMS\MyApp\MyApp.lnk" "$INSTDIR\MyApp.exe" 在程序列表中创建快捷方式,但是我遇到了和以前一样的问题,只是这次 SetOutPath "$INSTDIR" 没有改变任何东西......有什么想法吗?
    • 现在还有问题吗?什么问题?如果之后出现问题,请再次使用SetOutPath 回到原来的位置。
    • 对不起,我按“enter”太快了,我没有写完;)
    • 应该工作...您介意为问题中的上下文提供更多代码吗?可能是太明显的东西,当我看它时可能会很明显。或者它通常可能是一些令人困惑的行为。
    【解决方案2】:
    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 
    

    【讨论】:

      猜你喜欢
      • 2016-06-28
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多