wixsharp: More problems with mixed x86 and x64
I am trying to create an installer that
- Installs into
Program Filesand notProgram Files (x86) - Creates registry keys both in
Softwareand inSoftware\Wow6432Node - Creates a folder in
ProgramData
First thing I do is to set the Platform to x64, so this is a x64 installer.
Now, wix# seems to be adding all RegValue instances to the first directory it encounters (reference). But this fails because the first directory is the ProgramFiles64 directory (“error LGHT0204: ICE80: This 32BitComponent Registry38 uses 64BitDirectory ProgramFiles64Folder”).
Then I tried to simply move the folder in ProgramData to the first position. This fixes the compilation errors, but now it thinks that this folder is the installation directory.
Next, I tried to give the actual installation directory several IDs that I hoped would help. I tried INSTALLDIR and INSTALLDIR_ABSOLUTEPATH. This seemed to confuse the system even more, because now, the [INSTALLDIR] variable which I use in a regvalue got expanded to C:\ProgramFiles64Folder. Also, the property INSTALLDIR_ABSOLUTEPATH is always set to the first encountered directory (reference).
Finally, it seems to be impossible to add a RegValue to a Dir, to manually choose the directory it should be contained in (reference)
I am not sure how to proceed from here.
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Comments: 18 (17 by maintainers)
Daniel, I just cannot do right now any deep investigation but I will come back to you tomorrow with the more more in depth explanation.
But from the top of my head, ICE validation imposes some draconian restrictions (e.g. you must have at least a single component in the user profile). Thus user has only two options:
WixSharp inserts the components by default. Apparently in your case it inserts the dummy component incorrectly it is a bug but not the one that happens all the time. It is a the first report for auto-insertion failure to be caused by x64. That’s why I would really appreciate a simple “hello world” project that shows the problem
In a mean time you can disable this auto-workaround by setting
AutoElements.DisableAutoUserProfileRegistry = true