title: Windows installer: Error 1001, CustomAction _xxxxx.install returned actual error code 1603
body: <p>Question:</p>
  
  <p>I have created an installer for a windows service with Visual Studio 2012 and InstallShield.</p>
  
  <p>The service runs fine.<br />
  The installer runs fine on my development machine (windows 8 64 bit) and my XP virtual machine (32 bit).</p>
  
  <p>But on Windows Server 2008 R2, the same installer gets "Error 10001".<br />
  No further information whatsover.</p>
  
  <p>The following information was included in the eventlog: </p>
  
  <pre><code>Product: DbBackupServiceSetup -- Error 1001. 
  (NULL)
  (NULL)
  (NULL)
  (NULL)
  (NULL)
  
  the message resource is present but the message is not found in the string/message table
  </code></pre>
  
  <p>If I install manually with:</p>
  
  <pre><code>C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "D:\Program Files\Test\DbBackupService.exe"
  </code></pre>
  
  <p>Then it works fine even on Windows Server 2008 R2...</p>
  
  <p>I've created one installer with 32 bit executables and one with 64 bit executables, but I get this error on both...</p>
  
  <p>I've tried executing the msi with logging enabled</p>
  
  <pre><code>msiexec /i "D:\Install\DISK1\DbBackupServiceSetup.msi" /Lv "D:\example.log"
  </code></pre>
  
  <p>The first indication of an error in the logfile is here:</p>
  
  <pre><code>Created Custom Action Server with PID 3932 (0xF5C).
  MSI (s) (C0:74) [14:26:28:065]: Running as a service.
  MSI (s) (C0:74) [14:26:28:080]: Hello, I'm your 32bit Elevated custom action server.
  MSI (s) (C0!14) [14:26:33:681]: 
  MSI (s) (C0:E8) [14:26:33:681]: Leaked MSIHANDLE (16) of type 790531 for thread 3348
  MSI (s) (C0:E8) [14:26:33:681]: Note: 1: 2769 2: _B384C869AD7BC0C39F5780609620645B.install 3: 1 
  Info 2769. Custom Action _B384C869AD7BC0C39F5780609620645B.install did not close 1 MSIHANDLEs.
  CustomAction _B384C869AD7BC0C39F5780609620645B.install returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
  Action ended 14:26:33: InstallFinalize. Return value 3.
  MSI (s) (C0:F0) [14:26:33:697]: User policy value 'DisableRollback' is 0
  MSI (s) (C0:F0) [14:26:33:697]: Machine policy value 'DisableRollback' is 0
  </code></pre>
  
  <p>I don't get it.<br />
  The very same installer runs fine on other machines.<br />
  All the custom actions are wrapped inside try-catch, the system account has full access onto the filesystem, and it's not a network share.<br />
  And installing the service with installutil works, so it must be an error in the installer itselfs.
  <br /></p>
  
  <p>To me it looks like it is calling </p>
  
  <pre><code>C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe "D:\Program Files\test\DbBackupService.exe"
  </code></pre>
  
  <p>instead of</p>
  
  <pre><code>C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "D:\Program Files\test\DbBackupService.exe"
  </code></pre>
  
  <p>and hence gets bad image exception.</p>
  
  <p>However, if that's the case, what I don't understand is why i get this error using both the 32 and 64 bit executables... </p>
  
  <p>It stands to reason that the problem is InstallShield itselfs...<br />
  Oh, I'm using remote desktop (mstsc.exe) to connect to the server, in case that makes a difference, and I have no access to the server directly, so I can't try if it's a mstsc problem.</p>