una sistema puedo posterior operativo net instalar instalado framework este error equipo desinstalar admite actualización .net .net-4.0 wix wix3.5

.net - sistema - no puedo instalar net framework 4.6 en windows 7



¿Las acciones personalizadas de WIX creadas para.Net Framework 4.0 no funcionan? Formas de resolver? (5)

Estábamos usando WIX 3.5 (Número de compilación 1811) y creamos una acción personalizada creada con Visual Studio 2008 y con framework de destino como .Net 3.5. Esto solía funcionar muy bien, hasta que construimos la acción personalizada usando Visual Studio 2010 y con el marco de destino como .Net 4.0.

WIX no puede invocar la acción personalizada, el error que obtenemos es este:

SFXCA: Extracting custom action to temporary directory: C:/Windows/Installer/MSI69BD.tmp-/ SFXCA: Binding to CLR version v2.0.50727 Calling custom action SomeCompany.SomeProduct.InstallerPlugin!SomeCompany.SomeProduct.InstallerPlugin.XYZProductCustomAction.ABCMethod Error: could not load custom action class SomeCompany.SomeProduct.InstallerPlugin.XYZProductCustomAction from assembly: SomeCompany.SomeProduct.InstallerPlugin System.BadImageFormatException: Could not load file or assembly ''SomeCompany.SomeProduct.InstallerPlugin'' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded. File name: ''SomeCompany.SomeProduct.InstallerPlugin'' at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) at System.Reflection.Assembly.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)


Hay un error abierto para ajustar el elemento DTF supportedRuntime en su manifiesto para admitir NETFX 4.0. Ese error aún no ha sido resuelto, por lo que es necesario que lo hagas tú mismo.


Bueno, finalmente resolvimos el problema, tuvimos que configurar:

useLegacyV2RuntimeActivationPolicy="true" and have both versions specified: <supportedRuntime version="v2.0.50727"/> and <supportedRuntime version="v4.0"/>

Si solo se especifica "<supportedRuntime version="v4.0"/> , no funciona. Parece un error en WIX 3.5 Beta


Además de la solución de Ngm, tuvimos que establecer el marco de destino de la biblioteca de clase de acción personalizada administrada de nuevo en .NET 2.0 para que todo funcione.


Gracias por esta agradable publicación. Se resolvió mi consulta. En mi caso, el error fue que cambié el archivo de configuración y ahora lo restauré al original.


Solo mis dos centavos:

A diferencia de Ngm, solo tuve que agregar supportedRuntime para .NET 4.0

<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" /> </startup> </configuration>

Importante:

  1. No cambie el nombre de CustomAction.config
  2. Establezca CustomAction.config Build Action en Content, de lo contrario no funcionará