【问题标题】:What's wrong with NSIS shortcut?NSIS 快捷方式有什么问题?
【发布时间】:2020-10-07 07:59:41
【问题描述】:

应该警告,英语不是我的母语,抱歉语法错误。

我对使用 NSIS 创建的快捷方式有疑问。快捷方式的链接指向使用 json 配置的 exe 文件,配置与 exe 在同一目录中,当我使用快捷方式时,它返回一个错误,它找不到配置,因为它正在搜索快捷方式的目录。但是当我自己制作快捷方式时,它可以正常工作 - 在 exe 的目录中搜索配置。我需要创建快捷方式,它将使用位于 instdir 中的配置。如何正确制作?

这就是我创建快捷方式的方式:

CreateShortCut "$DESKTOP\%link_name%.lnk" \
"$INSTDIR\%SomeDir%\Application.exe" \
"" \
"C:\Users\Daniil.Bogdanov\Pic\logo.ico" 0

config 和 exe 位于 %SomeDir%

【问题讨论】:

  • 你的应用程序不应该依赖于工作目录,这是你需要修复的错误。
  • 它不依赖于目录。我认为。但我可能错了。你能解释一下错误在哪里吗?
  • 在您的应用中,您必须使用完整路径访问配置文件。
  • 哦,是的,你是对的,但这是另一个故事:D
  • 不,这不是另一个故事。快捷方式并不是用户使用不同工作目录启动应用程序的唯一方式。

标签: json exe nsis shortcut


【解决方案1】:

这不是最直观的,但 CreateShortCut 会根据当前的 $OUTDIR 值设置快捷方式的工作目录。

https://nsis.sourceforge.io/Docs/Chapter4.html#createshortcut

$OUTDIR 存储为快捷方式的工作目录属性。您可以在创建快捷方式之前使用 SetOutPath 更改它

所以我猜测您的输出路径与可执行文件的位置不同。这可以通过在创建快捷方式之前使用SetOutputPath 来解决。

SetOutPath "$INSTDIR\%SomeDir%\"
CreateShortCut "$DESKTOP\%link_name%.lnk" \
"$INSTDIR\%SomeDir%\Application.exe" \
"" \
"C:\Users\Daniil.Bogdanov\Pic\logo.ico" 0

【讨论】:

  • 非常感谢!是的,NSIS 只有英文文档,所以我失去了一些感觉
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多