2

On certain remote computers when I use PsExec to run installers (.exe files), PsExec just hangs there. When I try running the installer, that PsExec transferred, directly from the remote computer (located in system32) I get the following popup error message:

NSIS Error
Error Launching Installer

This only seems to happen on 64bit computers and only for some installers. However after googling a bit I didn't seem to find a solution.

This link tells me that it might have something to do with the fact that it's running under system32.

The weird thing is that if I copy the installer from system32 to somewhere else like my desktop and run it from there, it works!

What's going on here?

Thanks

Luca Matteis
  • 548
  • 4
  • 11
  • 21

1 Answers1

1

Paradoxically, on a 64-bit Windows machine:

  1. c:\windows\wow64\ contains 32-bit system files.
  2. c:\windows\system32\ contains 64-bit system files.

When a 32-bit program tries to access c:\windows\system32\, it is redirected to c:\windows\wow64\. This is very similar to what happens when 32-bit programs are installed to the c:\program files (x86)\ directory by redirection.

You may find the following discussion helpful: http://forums.shoutcast.com/showthread.php?t=237297

Bottom line: You have discovered one of the many reasons why running installers from system32 is never a sound practice. If you do not need the installer after the installation is complete, consider copying the installer to a temporary location and deleting it when the installation is done. If you would prefer to keep the installer around on each machine, consider establishing a place where installers belong (e.g. c:\install\program-name).

Example of how to use a temporary location:

psexec \\target-pc -e -c -f -w c:\windows\temp installer.exe

Details:

  • -e: don't load your profile (speeds things up and saves disk space on the remote PC)
  • -c: copy the file
  • -f: overwrite if a file with the same name is already there (use with caution)
  • -w c:\windows\temp: set the working directory to c:\windows\temp
Skyhawk
  • 14,200
  • 4
  • 53
  • 95
  • Great thanks, but how to do I copy it on %temp%? I was using PsExec for the copy. – Luca Matteis Aug 24 '10 at 07:09
  • Details added above. – Skyhawk Aug 24 '10 at 16:17
  • `-w` **won't work** for every installer. It stills hangs with the same bug that sysinternals guys won't resolve. This is better: copy `installer.exe` in the remote `C:\Windows\SysWOW64` directory. Run `psexec \\remotemachine -c -f installer.exe` and it'll work. It will copy the file to `C:\Windows\System32` but as there is a filename with the same name in `SysWOW64` it will work. Note that this IS NOT a workaround. Just pointing out the flaw in psexec code. – Sebastian Jun 03 '13 at 21:17