为什么NSIS将目标设置为默认的INSTDIR?

时间:2012-01-26 23:35:53

标签: nsis

我正在尝试为32位应用程序创建一个exe安装程序,它也会为我的应用程序创建快捷方式。我正在使用NSIS构建安装程序,并且我成功构建了安装程序。当我在64位Windows操作系统上运行.exe时,它会创建必要的文件夹,更新注册表并在桌面上创建快捷方式。但是,当我检查创建的桌面上的shorcut的属性时,“start-in”参数是正确的。但是,目标参数是错误的。即我用:

创建快捷方式“$ DESKTOP \ shortcut.lnk”“$ INSTDIR \ bin \ app.exe”“”

其中INSTDIR = programfiles

启动设置正确:C:\ program files(x86).... 我期待目标是一样的。

但是,目标设置为:C:\ program files ....

我在这里遗漏了什么吗?

1 个答案:

答案 0 :(得分:1)

在创建快捷方式之前

MessageBox $ INSTDIR,确保它是C:\program files(x86)\...

您是否正在调用DisableX64FSRedirection(x64.nsh)?

启动/工作目录来自最后一次调用SetOutPath。

我认为NSIS几乎不会将字符串传递给shell,您可以使用logging build查看字符串,然后再传递给IShellLink::SetPath