NSIS 打包 win7 中无法删除快捷方式

转载 2013年12月05日 16:25:32

NSIS打包的安装程序,在Vista中的安装过程中如果向开始菜单添加了快捷方式的话,在卸载时卸载程序会不能正常删除这些快捷方式。

这 主要是因为Vista中使用UAC控制用户的权限。

我们使用NSIS打包程序一般会配套使用相应的脚本编辑器,比如HM NIS Edit,或者国内高手对HM NIS Edit进行源代码级增量改进之后的HM VNIS Edit,但是这两个软件都已经很久没有更新了,在使用向导创建开发脚本时,不会注意到使用Vista系统引起的问题,所以如果你使用上述两个脚本编辑器 生成脚本的话,就会出现这样的问题。

其实NSIS本身不存在什么问题,它提供了新的函数 RequestExecutionLevel语句(自2.21版添加),针对Vista的UAC进行权限请求,你只需在脚本中添加:

RequestExecutionLevel none|user|highest|admin

常 规安装程序只需user权限就可以解决上述问题了。

其他的解决方案:

使用SetShellVarContext all 将快捷方式创建到alluser的开始菜单中,但是感觉这样治标不治本。

参考自nsis官方文档:Shortcuts removal fails on Windows Vista

From NSIS Wiki

Windows Vista and Windows 7 automatically identifies installer executables, including NSIS installers, and asks the user permission to run them with elevated privileges. Automatic detection, however, comes with the price of automatic backward compatibility tricks. One of which is automatic relocation of shortcuts created in the Start Menu to All Users' Start Menu.

To workaround this, use the new RequestExecutionLevel command or create the shortcuts in All Users' folders in the first place, using SetShellVarContext.

复制代码
OutFile vista.exe Name Vista RequestExecutionLevel admin #NOTE: You still need to check user rights with UserInfo! Function .onInit #TODO: call UserInfo plugin to make sure user is admin FunctionEnd Section SetShellVarContext all CreateDirectory "$SMPROGRAMS\Vista Test" CreateShortcut "$SMPROGRAMS\Vista Test\hello.lnk" $WINDIR\notepad.exe WriteUninstaller $EXEDIR\uninst.exe SectionEnd Section uninstall SetShellVarContext all Delete "$SMPROGRAMS\Vista Test\hello.lnk" RMDir "$SMPROGRAMS\Vista Test" SectionEnd

NSIS 附加快捷方式到开始菜单、桌面、任务栏

在安装完成后,自动创建快捷方式,并且能够附加到开始菜单或锁定到任务栏。 在网上找到的很多方法,看到使用C++实现的一个方法,代码如下: //任务栏:taskbarpin/taskbarun...

NSIS图形界面(使用nsiskin插件)进阶教程

写在系列教程的最开头,感谢烂菜大牛,他写了个系列教程(NSIS进阶教程)是本系列教程的基础 本系列教程和烂菜大牛的系列教程异同如下: 1.本教程使用的图片资源来源于烂菜大牛的教程 2.插件使用,本系列...
  • wowen
  • wowen
  • 2017年01月10日 15:12
  • 1710

NSIS制作自己的安装包

想必大家都用过WinAMP 来播放MP3音乐,也都熟悉了WinAMP 的安装界面。它的安装程序小巧玲珑,简单直观。想为你自己编的程序制作一个这样的安装界面吗?完全可以,因为有免费的NSIS。它的全称是...
  • jing0611
  • jing0611
  • 2010年11月10日 10:15
  • 13815

NSIS 打包 win7 中无法删除快捷方式

NSIS打包的安装程序,在Vista中的安装过程中如果向开始菜单添加了快捷方式的话,在卸载时卸载程序会不能正常删除这些快捷方式。 这 主要是因为Vista中使用UAC控制用户的权限。 我们...

【转】[win7] 桌面IE快捷方式无法删除 解决办法

[win7] 桌面IE快捷方式无法删除 解决办法 WIN7:桌面多处很多IE的快捷方式或者就是IE图标,右键属性执行IE后面跟WW.XXXX.COM流氓网址,或者右键属性里面只有创建快捷方式等。无论...
  • shaoz
  • shaoz
  • 2011年10月06日 09:52
  • 463

删除桌面快捷方式WIN7,WIN8

  • 2014年03月22日 18:40
  • 519KB
  • 下载

win7 去掉快捷方式箭头

  • 2015年10月20日 20:05
  • 2KB
  • 下载

win7系统快捷方式被某应用程序强制关联的原因及解决方法图文教程

最近使用Windows7系统的用户反应桌面上的快捷方式双击打开都变成了打开系统中的某个程序,这是怎么回事呢?该怎么办呢?下面脚本之家的小编就带来win7系统快捷方式被某应用程序强制关联的原因及解决方法...

恢复Win7快捷方式小箭头

  • 2016年12月01日 23:20
  • 268B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSIS 打包 win7 中无法删除快捷方式
举报原因:
原因补充:

(最多只允许输入30个字)