Brief
I have an installation package (MSI based) which attempts to register a dll file for use as a Windows Explorer Bar (Internet Explorer Toolbar).
The custom action is defined as follows:
[SystemFolder]\regsvr32.exe /s "pathtodllhere"
The error
- The regsvr32 custom action does not work on Windows XP 64-bit.
Output from MSI log:
CustomAction SystemFolder_2 returned actual error code 5. Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Action SystemFolder_2, location: C:\Windows\SysWOW64\, command: regsvr32.exe /s "C:\Program Files (x86)\Test Install\test.dll"
MSI (s) (10:F4): Product: Test Install -- Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Action SystemFolder_2, location: C:\Windows\SysWOW64\, command: regsvr32.exe /s "C:\Program Files (x86)\Test Install\test.dll"
A brief run-down of my tests/thoughts thus-far:
- Custom action is in the "InstallFinalize" section, it is therefore run ONLY when the files have been dropped onto the hard drive.
- Dll file is not corrupt and is valid.
- Regsvr32 custom action works fine (and MSI installation) on: Windows 7 32-bit and Windows XP 32-bit.
- Regsvr32 32-bit version is executed during 64-bit install (as it should).
- Regsvr32 fails with error code 5, i.e. ERROR_ACCESS_DENIED.
Solutions and Musings
- Self-registration - Not using regsvr32 and manually place the registry keys using my MSI Installer.
- The dll is a Delphi COM dll which uses the TRegistry component to register itself. Again, I can't think of a reason why this wouldn't work as it is merely a wrapper, but just a thought.
Hopefully I have shown my research here and don't waste anyone's time!
ERROR_ACCESS_DENIED
, as David said. You don't have sufficient rights to access the registry location thatregsvr32
is using. – Ken White