To definitively identify this scenario, enable verbose MSI logging on the client. To do this, add the following Windows Registry Editor Version 5.00 registry view:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer
"Logging"="voicewarmupx"
For more information about how to enable MSI logging, click the following article number to view the article in the Microsoft Knowledge Base:
223300 How to enable Windows Installer logging
A verbose MSI log will contain an error that resembles the following:
SFXCA: Extracting custom action to temporary directory: C:\WINDOWS\Installer\MSI250D.tmp-\
SFXCA: Binding to CLR version v4.0.30319
Calling custom action AppVMsiPackageTemplate!Microsoft.AppV.MsiTemplate.CustomActions.CustomActions.PublishPackage Error: could not load custom action class Microsoft.AppV.MsiTemplate.CustomActions.CustomActions from assembly: AppVMsiPackageTemplate System.IO.FileLoadException: Could not load file or assembly 'AppVMsiPackageTemplate, Version=5.0.1104.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A) File name: 'AppVMsiPackageTemplate, Version=5.0.1104.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' ---> System.Security.SecurityException: Strong name validation failed. (Exception from HRESULT: 0x8013141A)
The Zone of the assembly that failed was:
MyComputer at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) at System.AppDomain.Load(String assemblyString) at Microsoft.Deployment.WindowsInstaller.CustomActionProxy.GetCustomActionMethod(Session session, String assemblyName, String className, String methodName)