NSIS安装程序访问引擎检查是否已安装

时间:2018-08-18 11:59:45

标签: ms-access installation nsis

我正在使用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}

1 个答案:

答案 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