I created an installer for a WCF/Silverlight application. It’s all working fine until the user changes the installation path to C:\Program Files. All the other paths work fine.
failed to set security info for object: C:\Program Files (x86)\
It’s on Windows 2008 Server R2. Even though the user selects C:\Program Files\ the log shows
C:\Program Files (x86)\
Last few lines from the installation log:
MSI (s) (90:08) [13:22:10:334]: LocalSQLConfigDataSource returned 1 in
remote context. MSI (s) (90:08) [13:22:10:344]: Executing op:
ActionStart(Name=ExecSecureObjects,,) Action 13:22:10:
ExecSecureObjects. MSI (s) (90:08) [13:22:10:353]: Executing op:
CustomActionSchedule(Action=ExecSecureObjects,ActionType=3073,Source=BinaryData,Target=ExecSecureObjects,CustomActionData=C:\Program
Files (x86)\CreateFolderEveryone269221888) MSI (s) (90:B0)
[13:22:10:358]: Invoking remote custom action. DLL:
C:\Windows\Installer\MSIF980.tmp, Entrypoint: ExecSecureObjects
ExecSecureObjects: Entering ExecSecureObjects in
C:\Windows\Installer\MSIF980.tmp, version 3.6.3005.0
ExecSecureObjects: Securing Object: C:\Program Files (x86)\ Type:
CreateFolder User: Everyone ExecSecureObjects: Error 0x80070005:
failed to set security info for object: C:\Program Files (x86)\
32bit installers can’t write to the 64bit ProgramFiles. That requires a 64bit MSI.
Why would you change the permissions of the Program Files folder? That’s terribly invasive to the operating system.