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