2010-11-28 7 views
1

PATH変数の更新に問題があります。私がしなければならないことは、パス(これはうまくいきます)を更新して、すぐにインストーラで新しいバージョンを使用することです。これは動作していません。ここで同じインストーラ内で更新されたNSISパスを使用する

は、私はパスを更新するために使用しているものです:

!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 

そして、ここでは、私はそれを行うために必要なものです:

EXEC_OUTは以下の通りです
Section "${PRODUCT_NAME}" SEC_R 

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

SectionEnd 

; 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 

これはなぜ機能しないのですか?アプリケーションが終了する前にPATHを更新することはできませんか?

答えて

4

実行中のプロセスの環境変数も設定する必要があります。 ($ 1新しいPATHをある)

http://nsis.sourceforge.net/Setting_Environment_Variables_to_Active_Installer_Process

+1

そして、あなたはそれがあまり怖い見たい場合は、 'システム:: KERNEL32 :: SetEnvironmentVariableコール(トン "PATH" を、TR1)' –

+0

はあなたにクリスの両方をありがとうキチク!それはうまくいった。 –

関連する問題