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を更新することはできませんか?
そして、あなたはそれがあまり怖い見たい場合は、 'システム:: KERNEL32 :: SetEnvironmentVariableコール(トン "PATH" を、TR1)' –
はあなたにクリスの両方をありがとうキチク!それはうまくいった。 –