I have experienced a number of issues with LicAdmin (Microsoft.Licensing.LicAdmin.exe) :
- Why won't LicAdmin work with 'versioned' DLLs?
- Why won't LicAdmin work when I put (some of) the runtime DLLs in the .NET Global Assembly Cache (GAC)?
- Why does LicAdmin show all licenses for my product as "Foreign Vendor"?
As of Runtime version 3.0.1910, License Admininstrator should work correctly given the following:
- License Administrator is invoked from a normal directory after an installation has succeeded (see support.inishtech.com/KB7 )
- Your single unversioned permutation DLL (i.e., Microsoft.Licensing.Permutation_XX123_2.0.dll) is sitting alongside it and has the same version number (as available from Windows Explorer properties on the DLL or EXE)
- The associated Runtime and Utils assemblies are available - either via the GAC or through having the DLLs sit adjacent to Microsoft.Licensing.LicAdmin.exe and Microsoft.Licensing.Permutation_XX123_2.0.dll)
Further details / troubleshooting information:
- License Administrator should never be registered in the GAC - there is no good reason to do so, and it will fail to pick up your specific permutation if you do;
- License Administrator 3.0.1910 and later should work correctly regardless of whether any newer or older, versioned or unversioned runtime DLLs are registered in the GAC;
- License Administrator does not (and did not previously) work with 'versioned' DLLs (but versioned DLLs are deprecated as of release 3.0.1910 - see www.inishtech.com/FAQ86);
- If you accidentally redistribute (one should NOT do this) the permutation that the Code Protector SDK is protected with (Microsoft.Licensing.Permutation2.0.dll) instead of your permutation DLL (i.e., Microsoft.Licensing.Permutation_XX123_2.0.dll), one will see a state of "Foreign Vendor" on each of your licenses (the Help|About in License Administrator should show "Microsoft Master" rather than your vendor name in this case);
- Running %Program Files(x86)%\Inishtech SLP Code Protector\Microsoft.Licensing.LicAdmin.exe will result in the same behaviour as discussed in (4) - all licenses will show as Foreign Vendor. This is because the DLL being picked up is Microsoft.Licensing.Permutation2.0.dll – the one Code Protector is protected with;
- Running License Administrator with more than one permutation (with the Microsoft.Licensing.Permutation_XX123_2.0.dll name format) beside it will cause a load failure as it is not clear what permutation should be chosen. Ensuring only a single permutation is present will resolve this condition. (Aside: If Microsoft.Licensing.Permutation2.0.dll is also present, it will be chosen, resulting in the implications discussed in (4) - but one should NOT redistribute this DLL so this should never arise).
See also support.inishtech.com/FRM6T113 for in-depth discussions regarding observable issues (and tradeoffs involved in applying workarounds) when using Runtime versions BEFORE 3.0.1910.