NSIS学习记录の----win8.1和win10对于NSIS创建的卸载快捷方式无法在开始目录下显示

NSIS提供了很好的软件卸载功能编写的方法,但是针对win8.1和win10操作系统,由于开始目录的权限限制,我们有时候并不能完美的完成所需要的功能----卸载程序的快捷方式不能显示。话不多说,下面提供解决方法:

  运用all用户权限和current用户权限各写一遍即可解决问题。下面是我打安装包卸载的快捷方式的代码:

  SetShellVarContext current
  CreateDirectory "$SMPROGRAMS\立思辰合众"
  CreateDirectory "$SMPROGRAMS\立思辰合众\智课堂"
  CreateShortCut "$SMPROGRAMS\立思辰合众\智课堂\智课堂.lnk" "$INSTDIR\U-Teach.exe"
  ;高级配置
  CreateShortCut "$SMPROGRAMS\立思辰合众\智课堂\高级配置.lnk" "$INSTDIR\AdvancedConfig.exe"
  CreateShortCut "$SMPROGRAMS\立思辰合众\智课堂\配置.lnk" "$INSTDIR\Config.exe"
  CreateShortCut "$SMPROGRAMS\立思辰合众\智课堂\卸载智课堂.lnk" "$INSTDIR\Uninst.exe"

  SetShellVarContext all
  CreateShortCut "$DESKTOP\智课堂.lnk" "$INSTDIR\U-Teach.exe"
  CreateDirectory "$SMPROGRAMS\立思辰合众"
  CreateDirectory "$SMPROGRAMS\立思辰合众\智课堂"
  CreateShortCut "$SMPROGRAMS\立思辰合众\智课堂\智课堂.lnk" "$INSTDIR\U-Teach.exe"
  ;高级配置
  CreateShortCut "$SMPROGRAMS\立思辰合众\智课堂\高级配置.lnk" "$INSTDIR\AdvancedConfig.exe"
  CreateShortCut "$SMPROGRAMS\立思辰合众\智课堂\配置.lnk" "$INSTDIR\Config.exe"
  CreateShortCut "$SMPROGRAMS\立思辰合众\智课堂\卸载智课堂.lnk" "$INSTDIR\Uninst.exe"

你会神奇的发现问题解决了,有个关键的问题需要注意一下,就是卸载的时候最好调用cmd命令完成,以保证完全是删除快捷方式!代码如下:

	;快捷方式删除操作
  SetShellVarContext current
  Delete "$DESKTOP\智课堂.lnk"
  nsExec::Exec ‘cmd /c rd /q /s "$SMPROGRAMS\立思辰合众\智课堂"‘

  SetShellVarContext all
  Delete "$DESKTOP\智课堂.lnk"
  nsExec::Exec ‘cmd /c rd /q /s "$SMPROGRAMS\立思辰合众\智课堂"‘
时间: 2024-11-06 17:42:22

NSIS学习记录の----win8.1和win10对于NSIS创建的卸载快捷方式无法在开始目录下显示的相关文章

NSIS学习记录の----NSIS插件调用

我们都知道NSIS可以和C或者C++混合编程,方法是NSIS调用C或C++的动态库,那么如何调用呢? 首先我们来创建动态库: // add.cpp : 定义 DLL 应用程序的导出函数. #include "stdafx.h" extern "C"_declspec(dllexport) int Add(int a,int b) { return a+b; } extern "C"_declspec(dllexport)要编译的函数很多的情况下,

学习记录001-007-阶段习题小结

一.第1段 1.显示目录下第一级目录 ls -l |grep ^d 或者颜色区分[^ ee] //非ee的字符ls -F //在目录下显示目录后加上/ ls -F |grep / 或者/$ 以什么什么结尾 p 也有这个功能find . -type d //可以查看子目录,有二级目录tree -Ld 1 也可以find -maxdepth level ls -ld */ls -l |awk '/^d/'ls -l|sed -n '/^d/p' 2.假如当前目录是/data 你用命令 cd /tmp

Python学习记录-2016-12-17

今日学习记录 模块: import os#导入os模块 import sys#导入sys模块 os.system("df -h")#执行df -h命令 cmd_res = os.popen("df -h").read()#将命令的返回结果赋值给cmd_res,如果不加入.read()会显示命令的返回加过在内存的位置 print(sys.path)#显示系统变量路径,一般个人模块位于site-packages下,系统模块位于lib下 print(sys.argu[2]

Smart210学习记录------块设备

转自:http://bbs.chinaunix.net/thread-2017377-1-1.html 本章的目的用尽可能最简单的方法写出一个能用的块设备驱动.所谓的能用,是指我们可以对这个驱动生成的块设备进行mkfs,mount和读写文件.为了尽可能简单,这个驱动的规模不是1000行,也不是500行,而是100行以内. 这里插一句,我们不打算在这里介绍如何写模块,理由是介绍的文章已经满天飞舞了.如果你能看得懂.并且成功地编译.运行了这段代码,我们认为你已经达到了本教程的入学资格,当然,如果你不

Objc基础学习记录5

NSMutableString类继承的NSString类. NSMutableString是动态的字符串. 1.appendingString 方式: 向字符串尾部添加一个字符串. 2.appendingFormat:可以添加多个类型的字符串. int,chat float,double等 3.stringWithString 创建字符串, 4.rangeOfString 返回str1在另一个字符串中的位置. 5.NSMakeRange(0,3) 字符串0位到3位. 6.deleteCharac

Windows API 编程学习记录<二>

恩,开始写Windows API编程第二节吧. 上次介绍了几个关于Windows API编程最基本的概念,但是如果只是看这些概念,估计还是对Windows API不是很了解.这节我们就使用Windows API 让大家来了解下Windows API的用法. 第一个介绍的Windows API 当然是最经典的MessageBox,这个API 的作用就是在电脑上显示一个对话框,我们先来看看这个API的定义吧: int WINAPI MessageBox(HWND hWnd, LPCTSTR lpTe

Windows API 编程学习记录<三>

恩,开始写API编程的第三节,其实马上要考试了,但是不把这节写完,心里总感觉不舒服啊.写完赶紧去复习啊       在前两节中,我们介绍了Windows API 编程的一些基本概念和一个最基本API函数 MessageBox的使用,在这节中,我们就来正式编写一个Windows的窗口程序. 在具体编写代码之前,我们必须先要了解一下API 编写窗口程序具体的三个基本步骤:             1. 注册窗口类:             2.创建窗口:             3.显示窗口: 恩,

Python学习记录day6

Python学习记录day6 学习 python Python学习记录day6 1.反射 2.常用模块 2.1 sys 2.2 os 2.3 hashlib 2.3 re 1.反射 反射:利用字符串的形式去对象(默认)中操作(寻找)成员 cat commons.py #!/usr/bin/env python#_*_coding:utf-8_*_''' * Created on 2016/12/3 21:54. * @author: Chinge_Yang.''' def login(): pr

Python学习记录-2016-11-29

今日学习记录: 心灵鸡汤: 要有合适自己的目标,一个目标一个目标实现,切忌好高骛远: 最好的投资就是投资自己: 实现梦想 学习,学习,再学习: Talk is cheap. 从本身而言,余三十而立之年,从事测试行业7七年有余,一年半华为外包路由器,两年无线wifi测试,一年半网管软件测试,一年自动化测试经理,推行公司自动化测试进程,从开始的TCL,到现在的python,工欲善其事必先利其器,所以自己来学习,总体我认为我的目标是一直前进的,不断变化的,但是方向并没有大的错误,有些累,所以近期有些懈