开发者

Using updated NSIS path within the same installer

I am having a problem with updating the PATH variable. What I need to do is update the path (which works fine), and then immediately use the new version in the installer. This is not working.

H开发者_JAVA技巧ere is what I'm using to update the path:

!macro ADD_TO_PATH pathAdd
       DetailPrint "Adding ${pathAdd} to the system PATH."
       ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH"
       WriteRegStr ${WriteEnvStr_RegKey} "PATH" "$1;${pathAdd}"
       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000

       ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH"
       MessageBox MB_OK "Path: $1"

!macroend

And here is what I need to do with it:

Section "${PRODUCT_NAME}" SEC_R

        DetailPrint 'Installing Python Dateutil...'
        !insertmacro EXEC_OUT 'dtutil' 'easy_install python-dateutil' 'DateUtil' 'true'

SectionEnd

Where EXEC_OUT is the following:

; Silent execution of easy_install.
; abrt    - is set to 'true', causes Abort on failure.
; name    - user-friendly name to print
; package - unique name for labels
; what    - full command to execute(ex: "easy_install packageXYZ")
!macro EXEC_OUT package what name abrt

       MessageBox MB_OK "what: ${what}"
       ExecWait "${what}" $0
       ${If} $0 == "0"
             DetailPrint "${name} module installed successfully."
       ${Else}
              DetailPrint "${name} failed to install: $0"
             ${If} ${abrt} == "true"
                  abort "An essential part of the installation, ${name}, failed to install. Aborting installation."
             ${EndIf}
       ${EndIf}

!macroend

Why is this not working? Is it not possible for the PATH to be updated before the application exits?


You need to set the environment variable for the running process as well.

http://nsis.sourceforge.net/Setting_Environment_Variables_to_Active_Installer_Process

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜