[转]NSIS:判断D盘存在与否确定安装路径

转载自:http://www.flighty.cn/html/bushu/20140704_239.html

现在我们想实现这样的功能:

如果目标机器存在D盘,那么就安装程序到D盘,否则安装在系统盘。

后来又加了一个判断,即注册表中如果存在安装路径键值,则使用其键值作为安装路径。

思路:

通过检查D盘有没有磁盘空间来进行判断,如果D盘不存在,或者D盘是光驱,得到的磁盘空间必定是null。

示例:

!include "MUI2.nsh"
!include "FileFunc.nsh"

RequestExecutionLevel admin

Name "判断D盘存在与否确定安装路径"
Caption "判断D盘存在与否确定安装路径"
OutFile "test.exe"
InstallDir "$PROGRAMFILES\flighty app"
;读取注册中的安装路径,如果不存在则按照默认路径。
InstallDirRegKey HKCU "Software\flighty app" ""
BrandingText "www.flighty.cn"

!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "SimpChinese"

Section
SectionEnd

Section -Post
  ;在注册表中写入安装路径
  WriteRegStr HKCU "Software\flighty app" "" $INSTDIR
SectionEnd

Function .onInit
  ReadRegStr $R4 HKCU "Software\flighty app" ""
     StrCmp $R4 "" NO YES
     NO:
     StrCpy $R1 "D:\"
     ${DriveSpace} $R1 "/D=F /S=M" $R0
     ${If} $R0 = null
          StrCpy $R1 "$PROGRAMFILES\flighty app"
     ${Else}
          StrCpy $R2 "Program Files"
          StrCpy $R3 "flighty app"
          StrCpy $R1 "D:\$R2\$R3"
     ${EndIf}
     ;重新设置$INSTDIR默认值
     StrCpy $INSTDIR "$R1"
     YES:
     Goto +1
FunctionEnd
时间: 2024-08-30 13:18:52

[转]NSIS:判断D盘存在与否确定安装路径的相关文章

如何判断msi安装包程序是否安装及安装路径

使用MSI的函数可以检测软件是否安装,获取安装版本信息等,前提是软件为.msi文件安装的. 在使用前建议加上如下头文件及库依赖: #include <Windows.h> #include <Msi.h> #pragma comment(lib, "Msi.lib") 1. 检测软件是否安装,upgradeCode用于标示从一个版本升级到另一个版本,一般可以用于判断是否是同一个软件. bool CheckExistSoftware(wchar_t *upgrad

使用NSIS获取AutoCAD的安装路径

NSIS是个十分好用的打包工具,工作中常用到AutoCAD软件,出于某些原因,我需要使用NSIS来获取AutoCAD的安装路径. 经过对注册表的一番查看,写出代码如下: #可自行扩展,比如需要安装AutoCAD字体时,需要找到AutoCAD的安装路径等 Page instfiles ShowInstDetails show Var regCount Var subCount Var regKeyName Var subKeyName Var acadLocation Section SetReg

批处理判断域用户360程序是否安装,没安装则输出用户名和IP 。

问题:域策略部署360企业版杀毒软件,1.由于下面客户机的各种环境问题,导致个别终端没有安装上360软件.2.电脑700台比较多,一个个寻找特别麻烦.解决措施:写了一个批处理并域策略推送,把没安装的用户和IP发到指定目录里,自己按照用户或者IP去自由解决.这里技术有限,没有写判断正在运行的软件. 批处理逻辑:1.判断软件是否已安装(检测在360C盘路径下exe文件),没有安装输出用户名和IP地址,已安装退出.2.输出的路径是共享路径,每个用户都能写入. @echo off if "%1"

如何判断我的网站是否成功安装SSL

当您访问安装过SSL证书的网站时,浏览器中会显示一些明显的差异. 1)URL显示"https://"而不是"http://". 它看起来像这样: 2)您会在URL栏中看到一个小挂锁图标. 它会显示在URL栏的左侧或右侧,具体取决于您的浏览器.您可以单击挂锁以阅读有关网站和提供证书的公司的更多信息. 3)证书有效. 即使网站具有"https://"和安全锁,证书仍可能过期 - 这意味着您的连接不安全.在大多数情况下,显示为https的站点将是安全的

简单判断手机APP是否是初次安装

方法是写在APP进入页面Activity中的,才能调用下面的getFilesDir()方法: protected boolean firstsInstall() { File files = getFilesDir();/**getFilesDir()方法用于获取/data/data//files目录*/ File installFile = new File(files, "install");/**新建install文件*/ int newVC = 0; try { newVers

全方位掌握nsis脚本

NSIS 确实是一个不错的安装程序制作软件.新版本 2.0a7 真正实现了中文支持和支持 WinXP 的安装对话框. 不过要用它实现漂亮的安装界面和完美的安装功能就必须好好的写脚本. 而 NSIS 的脚本指令是在是太多了,有时候觉得好像又回到了学习 C 语言的年代.他丰富而起强大的功能甚至 可以编译出一些小而使用的软件(例如查找窗口句柄,然后...) 好了,不多说.我在这里着重介绍关于 NSIS 的一些使用问题以及新界面安装程序的制作过程,中间会附上一个 示例脚本. 这里只说单语言的简体中文 1

NSIS安装包脚本

!addincludedir "include" Var MSG     ;MSG变量必须定义,而且在最前面,否则WndProc::onCallback不工作,插件中需要这个消息变量,用于记录消息信息 Var Dialog  ;Dialog变量也需要定义,他可能是NSIS默认的对话框变量用于保存窗体中控件的信息 Var BGImage  ;背景大图 Var ImageHandle Var BGImage1  ;背景大图 Var ImageHandle1 ;Var BGImage2  ;

iOS 中判断应用程序是否为第一次打开

第一步:在AppDelegate中当应用启动完成后加入一下代码: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //NSUserDefaults非常好用,并不需要用户在程序中设置NSUserDefaults的全局变量,需要在哪里使用NSUserDefaults的数据,那么就在哪里创建一个NSUserDefaults对象,然

Vbs脚本定时判断及启动tomcat服务

说到tomcat服务,我们大家都会联系到apache,那apache和tomcat有什么区别呢,apache是web服务器(静态解析,如HTML),tomcat是java应用服务器(动态解析,如JSP.PHP)tomcat只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行,两者从以下几点可以比较的: 1.两者都是apache组织开发的 .2.两者都有HTTP服务的功能 .3.两者都是开源免费的 .当然对于一个java开发人员来