无法在快捷方式上嵌入图标?

时间:2014-03-28 11:18:51

标签: nsis

我创建了一个窗口应用程序,我需要为其创建setup.For创建设置我正在使用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 
    

    但是当我将这些添加到线条时,图标会消失

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

1 个答案:

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