Postgresql – Error: Unable to write inside TEMP environment variable path

installationpostgresqlpostgresql-9.2windows

I am installing PostgreSQL 9.2.4-1-windows.exe on Windows 7 64 with Service Pack 1.

I get the following, rather famous it seems, error:

There has been an error.

Unable to write inside TEMP environment variable path.

This occurs immediately upon launching. I see the postgresql splash, then this error occurs.

Everything I have found on the interwebs so far, i have tried. It includes:

  1. Disabled all anti-virus software. I have also stopped everything in the startup.
  2. Checked file associations for .VBS scripts. Nothing irregular (Windows Script Host registered)
  3. Windows Script Host is Enabled.
  4. I've tried installing as Administrator and other users that have admin rights.
  5. I have created the key HKLM\SOFTWARE\PostgreSQL\Installations manually and give it full rights.
  6. I have given Everyone full access to C:\Users\[username]\AppData\Local\Temp and c:\temp

Basically everything in the top 10 google hits.

I am working with the 32 bit version, but the 64 bit version install fails with the same error. I'm able to install successfully on other machines with similar config.

What else can I try?

Install log file:

Log started 09/20/2013 at 11:55:16
Preferred installation mode : qt
Trying to init installer in mode qt
Mode qt successfully initialized
Executing C:\Users\chad\AppData\Local\Temp/postgresql_installer_67b274715d/temp_check_comspec.bat
Script exit code: 0

Script output:
"test ok"

Script stderr:

Could not find registry key HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\postgresql-9.2 Data Directory. Setting variable iDataDirectory to empty value
Could not find registry key HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\postgresql-9.2 Base Directory. Setting variable iBaseDirectory to empty value
Could not find registry key HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\postgresql-9.2 Service ID. Setting variable iServiceName to empty value
Could not find registry key HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\postgresql-9.2 Service Account. Setting variable iServiceAccount to empty value
Could not find registry key HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\postgresql-9.2 Super User. Setting variable iSuperuser to empty value
Could not find registry key HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\postgresql-9.2 Branding. Setting variable iBranding to empty value
Could not find registry key HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\postgresql-9.2 Version. Setting variable brandingVer to empty value
Could not find registry key HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\postgresql-9.2 Shortcuts. Setting variable iShortcut to empty value
Could not find registry key HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\postgresql-9.2 DisableStackBuilder. Setting variable iDisableStackBuilder to empty value
[11:55:21] Existing base directory:
[11:55:21] Existing data directory:
[11:55:21] Using branding: PostgreSQL 9.2 (x86)
[11:55:21] Using Super User: postgres and Service Account: NT AUTHORITY\NetworkService
[11:55:21] Using Service Name: postgresql-9.2
Executing cscript //NoLogo "C:\Users\chad\AppData\Local\Temp\postgresql_installer_67b274715d\prerun_checks.vbs"
Script exit code: 1

Script output:
Input Error: There is no script engine for file extension ".vbs".

Script stderr:
Program ended with an error exit code

Error running cscript //NoLogo "C:\Users\chad\AppData\Local\Temp\postgresql_installer_67b274715d\prerun_checks.vbs" : Program ended with an error exit code

Best Answer

I was having this issue on Windows 7 64-bit and the following solution is what worked for me (via http://igordcard.blogspot.com/2012/03/unable-to-write-inside-temp-environment.html):

Why
To understand why this error was happening, I went to my TEMP folder and read the log from the PostgreSQL installer: C:\Users\myuser\AppData\Local\Temp\bitrock_installer.log

Which mentioned an interesting detail:
Input Error: There is no script engine for file extension ".vbs".

So, I picked up another file from the TEMP folder, the actual script used by the installer:
C:\Users\myuser\AppData\Local\Temp\prerun_checks.vbs

And tried to run it through the console using cscript:
Input Error: There is no script engine for file extension ".vbs".

I researched a bit more and discovered that the type of file associated with the vbs extension had been changed. In my case, by Notepad++. After I installed Notepad++, I associated some file extensions with it (including vbs), thus causing problems when detecting the type of the script (which shouldn't happen).

Solution
Run regedit, navigate to HKEY_CLASSES_ROOT\.vbs and change the (Default) key back to the string VBSFile. In my case it had been previously altered to Notepad++_file.