The problem stems from the data returned by the CPUID instruction. Certain extended features are not reported (even though they are present) when invoked from a 64-bit process. This results in a CPU mismatch when the profiles are compared.
Impact
The impact of this discrepancy is minor. It only affects applications that use hardware activation and allow the user to choose whether to run the application in 32- or 64-bit mode on the same machine. Consecutive runs of the application with the same bitness will continue to produce the same machine profile hash.
Workaround
requires v4.1 R4474To work around this issue, you can use the new Use64BitCompatibleCpuid property of the MachineProfile class. This static property will instruct DeployLX to ignore features that are reported only in 32-bit mode so that the machine profile hash will be consistent in both 32- and 64-bit modes.
Warning: Using this property for existing 32-bit installs will result in a CPU mismatch against their previous machine profile hash.
MachineProfile.Use64BitCompatibleCpuid = True ... _license = SecureLicenseManager.Validate(Me, Nothing, Nothing)
MachineProfile.Use64BitCompatibleCpuid = true; ... _license = SecureLicenseManager.Validate( this, null, null );