【问题标题】:Not able to embed icon on shortcut?无法在快捷方式上嵌入图标?
【发布时间】:2014-03-28 11:18:51
【问题描述】:

我创建了一个需要为其创建设置的窗口应用程序。为了创建设置,我使用的是 NSIS。 我已经编写了脚本来创建设置文件,该文件在桌面和星形菜单上创建快捷方式,现在我需要在快捷方式中嵌入一个图标。代码如下:

 Function "CREATE"
   createShortCut "$SMPROGRAMS\lnkname.lnk" "$DESKTOP\Application.exe" "ADC" "$DESKTOP\icon.ico" 0
   createShortCut "$DESKTOP\lnkname.lnk" "$DESKTOP\ApplicationMDMO\ApplicationMDMO\bin\debug\Application.exe" "ADC" "$DESKTOP\icon.ico" 0
 FunctionEnd

现在我为这个安装程序创建了一个卸载程序。在这个卸载程序中,我正在删除安装程序安装的快捷方式文件和应用程序文件。

 Function "Uninstall"
    Delete "$INSTDIR\*.*"
     Delete "$DESKTOP\lnkname.lnk"
    Delete "$SMPROGRAMS\lnkname.lnk"
 FunctionEnd

问题:

  • 当我尝试删除位于桌面和所有程序的快捷方式时,除非我添加此代码,否则不会删除所有程序快捷方式。

     RequestExecutionLevel admin //at the beginning
    
      SetShellVarContext all // at the section 
    

    但是当我将这些添加到行时,图标消失了

  • 当我排除上述代码中编写的代码时,“所有程序”处的快捷方式不会被清除。

【问题讨论】:

  • 您甚至没有向我们展示您是如何创建快捷方式的。您能否发布一个完整的最小版本的脚本来重现该问题?
  • @Anders 感谢您的评论。我分享了一些信息。

标签: nsis


【解决方案1】:

使用 SetShellVarContext all 时,如果您必须使用 UAC 等进行提升,$DESKTOP 解析的路径可能会发生变化。

我假设您并没有真正在用户桌面上安装应用程序 .exe 和其他文件?如果您将 .exe 和 .ico 放在 $ProgramFiles 下的某个位置,它应该可以工作...

InstallDir "$ProgramFiles\MyApp"

Section
SetShellVarContext all
SetOutPath "$InstDir"
File myapp.exe
File myapp.ico
CreateShortcut "$DESKTOP\myapp.lnk" "$InstDir\myapp.exe" "" "$InstDir\myapp.ico" 0
SectionEnd

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多