For our msi , we did not mention allusers property in existing releases. so by default it went as per user.
Our customers installed the application using an admin user id and that admin left the company. So his user id is no more in valid condition.
Now they are unable to migrate to newer version using another admin account (as it was installed as per user).
Though we can change our msi to support allusers ,it would not work in migration (major upgrade).
It seems like only when we give total new release where no existing release is supported we can fix the issue.
Is there any other workaround there to mention even if the previous msi was per user ,it should be major upgraded now?
We are using WIX 3.5 for our installation process.
Unfortunately, the Windows installer does not support upgrading "across contexts". As you found a per-machine package cannot upgrade a per-user package and a per-user package cannot upgraded a per-machine package.
You could write an executable that finds the old .msi and uninstalls them using APIs like ::MsiEnumRelatedProducts()
to find the products and then ::MsiConfigureProduct()
to remove them. However, without the user account, I'm not sure you'll be able to see the per-user installed product.