我正在使用NSIS安装程序,在安装过程中,我需要安装Access数据库引擎。这部分我正在工作。
我似乎无法解决该怎么办,就是检查是否已经安装了Access数据库引擎(32或64位)-我不知道NSIS是否可以这样做?有人知道吗?
用于Access数据库引擎的NSIS脚本当前正在执行此操作:-
${If} ${RunningX64}
HideWindow
File "access64.exe"
ExecWait "$INSTDIR\access64.exe"
BringToFront
${Else}
HideWindow
File "access32.exe"
ExecWait "$INSTDIR\access32.exe"
BringToFront
${EndIf}
答案 0 :(得分:0)
NSIS可以检查某些文件和/或注册表值的存在。
关于访问检测already on Stackoverflow有很多问题,您应该看看那些问题,看看应该查询哪些注册表项。究竟要寻找哪个密钥取决于您是否关心特定版本或Access的任何版本是否可接受。
您还可以向Windows shell询问有关Access ProgId的信息:
!include LogicLib.nsh
Section
System::Call 'SHLWAPI::AssocQueryString(i0x00000540,i4,t"Access.Application",p0,t.r1,*i${NSIS_MAX_STRLEN})i.r0'
${If} $0 = 0
DetailPrint "Registered application friendly name: $1"
${EndIf}
System::Call 'SHLWAPI::AssocQueryString(i0x00000540,i2,t"Access.Application",p0,t.r1,*i${NSIS_MAX_STRLEN})i.r0'
${If} $0 = 0
DetailPrint "EXE: $1"
; Call GetDLLVersion etc. if needed
${EndIf}
SectionEnd