The installation now runs successfully after deleting that registry key.

In addition, I tried changing the default action on batch files from "Open" to "Edit" using the registry (Windows 7). Double-clicking a file opens it in Notepad, but the installation runs successfully. So it looks like the UserChoice registry key, however it got there, is the essence of the problem.

Which, of course, %COMSPEC% /c would avoid because the program handling batch files is explicit.

Thanks,
Eric

On 1/27/2012 1:16 PM, Eric Borts wrote:
I found the problem with my computer here <http://help.lockergnome.com/windows/BAT-File-Association-Broken--ftopict514456.html>. It turns out this registry entry was causing my problem:

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bat
    \UserChoice
        Progid REG_SZ (Applications\cmd.exe)

Deleting the \UserChoice key restored my context menu and ability to run a ".bat" directly instead of using %COMSPEC%.

I am going to un-install an re-install postgres to verify that this solves my installation issues.

Eric







On 1/27/2012 12:41 PM, Eric Borts wrote:
Regarding my final point:

"Similarly, you may prefer to have the default action for a batch file (.bat) changed to Edit instead of Open. Double-clicking the file will not run the commands in the file, and if users want to run the file, they can use the*Open*command on the shortcut menu."
http://support.microsoft.com/kb/320036

This advice would be likely to hang the PostgreSQL installer.

Cheers,
Eric


On 1/27/2012 12:32 PM, Eric Borts wrote:
Hi Dave and Dharmendra,

It is not the "%COMSPEC% /c" call that causes the window to popup, but the WindowStyle parameter to WShell.Run (see Table 3.9 in MS TechNet WSH Objects / Running Programs <http://technet.microsoft.com/en-us/library/ee156605.aspx>). Setting WindowStyle to "0" creates a hidden window. This is how the code in the installer is currently written. Setting it to "1" creates a visible window. This happens when using "%COMSPEC% /c" or when calling the batch file directly.

Here is a another site recommending <http://classicasp.aspfaq.com/general/how-do-i-execute-a-dos-command/batch-file/exe-from-asp.html> the use of "%COMSPEC% /c" with a "0" second parameter, along with a note about the window (in)visibility:

"[...] do not run any command that raises a prompt, dialog, msgbox or any other GUI. This [...] could hang your entire system (since the invisible GUI will be waiting for a reply [...]"

Test code is attached that demonstrates using COMSPEC with a "0" versus a "1".

Output from SET command is also attached. Note that I've verified that this problem still occurs in Safe Mode.

Any other suggestions? I've also posted to StackOverflow <http://stackoverflow.com/questions/9038927/vbscript-hangs-when-launching-batch-file-with-wshell-script-run> for adivce.

A separate line of reasoning for using COMSPEC is that the calling of the .bat directly assumes that default action is to execute the batch file. If a user has modified their default .bat actions (which I have not), the postgres installer will fail. Using COMSPEC will avoid that pitfall.

I'll keep you posted if I discover why my machine doesn't execute batch files by default, or how it ended up in this condition. The computer is only about 2 months old, so I haven't had *that* much time to overwhelm it with installs.

Eric



Reply via email to