When migrating packages Windows 7 (or older) to Windows 10, or when simply targeting multiple OS’s with the same package, one might to pay attention on the way SDBINST.exe is used for compatibility fixes (shims).
In case the executable is included in the package (simply as a file or in the binary table, inside an MSI), there could be issues like error exit codes of sdbinst, or worse, like an incorrect behaviour even though the SDB file would appear to be installed.
Long story short:
- the SDBINST from Windows 7 will behave incorrectly on Windows 10 (shim/sdb will appear as installed but won’t do what it’s supposed to do)
- the SDBINST.exe from Windows 10 will not work at all on Windows 7 (visible in the exit code)
Adapt the package so that SDBINST.exe is excluded from it and use the executable found on the system, whether it’s an Win7 or Win10 OS.
In case this is done inside an MSI via custom action, make sure to change it from “Execute from Installation” in Wise or “EXE – Stored in Binary Table/Installed with Product” in InstallShiled to “Execute from Destination” – Wise or “EXE – Path from Directory”. That will result in a custom action with type 3106 (0x0c22) if you’re executing in Deferred – System Context, Synchronous.
For more info on sdbinst.exe and how to use it, check our other post about this topic.