我已经尝试了许多方法来显示从开始菜单中的图标,也从控制面板 - >程序和功能。当我在本地计算机上运行脚本时,它会显示图标。但是,当我在其他计算机上运行此安装程序时,它没有显示图标。我尝试了以下方法,但未在其他计算机上显示ICON。我的代码有什么问题吗?请帮助我解决此问题。
!define COMPANYNAME "EMR"
!define APPNAME "PersonalEdition"
方法1从“开始”菜单显示图标:
InitPluginsDir
File /oname=$PLUGINSDIR\newicon.ico "\workspace\NULLSOFT\src\Bitmaps\ProductIcon.ico"
SetShellVarContext all
createDirectory "$SMPROGRAMS\${COMPANYNAME}"
createShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" "$INSTDIR\Display.exe" "" "$PLUGINSDIR\newicon.ico" 0
方法2从“开始”菜单显示图标:
SetShellVarContext all
createDirectory "$SMPROGRAMS\${COMPANYNAME}"
createShortCut "$SMPROGRAMS\PersonalEdition.lnk" "$INSTDIR\Display.exe" "" "C:\Code\NULLSOFT\src\Bitmaps\ProductIcon.ico"
方法3从“开始”菜单显示图标:
SetShellVarContext all
createDirectory "$SMPROGRAMS\${COMPANYNAME}"
createShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" "$INSTDIR\Display.exe" "" "C:\Program Files\NSIS\Contrib\Modern UI 2\Bitmaps\ProductIcon.ico" 1
方法4从“开始”菜单显示图标:
SetShellVarContext all
createDirectory "$SMPROGRAMS\${COMPANYNAME}"
createShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" "$INSTDIR\Display.exe" "" "$INSTDIR\ProductIcon.ico" 0
要在“控制面板”->“程序和功能”中显示PCPE的详细信息
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\APC" "DisplayIcon" "C:\Code\PCPE\NULLSOFT\src\Bitmaps\ProductIcon.ico"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\APC" "DisplayIcon" "$PLUGINSDIR\newicon.ico"
答案 0 :(得分:0)
您不能在$ PluginsDir中存储图标(或其他永久文件),因为此目录已被安装程序删除!
您通常只需将图标放在.EXE中,但如果不能这样做,则必须将.ICO提取到$ InstDir:
Section
SetOutPath $InstDir
File "c:\myfiles\MyApp.exe"
File "c:\myfiles\ProductIcon.ico"
CreateShortcut "$SMPrograms\MyApp.lnk" "$InstDir\MyApp.exe" "" "$InstDir\ProductIcon.ico" 0
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MyApp" "DisplayIcon" "$InstDir\ProductIcon.ico"
WriteRegStr ... write the other uninstall data.
SectionEnd
在开发过程中,如果您先前的尝试破坏了缓存,则可能必须refresh the shell icons甚至是rebuild the icon cache。