如何设置用于运行MSIExec自定义操作的.NET Framework版本

我正在使用WiX创建一个MSI,该MSI调用在VS 2008中使用Votive编写的托管自定义操作(CA).CA以.NET 32位Framework 3.5为目标。当我运行安装程序时,它无法加载CA,因为它无法找到正确的框架版本。在MSI安装日志中是行   MSI(s)(5C:C0)[10:25:00:680]:您好,我是您的32位模拟自定义操作服务器。   SFXCA:将自定义操作提取到临时目录:C: Windows Installer MSI34ED.tmp-   SFXCA:绑定到CLR版本v4.0.30319 我已经知道问题是正在加载错误的框架版本。这似乎是在尝试运行版本4 CA时提到的反问题,并且框架的版本2由MSIExec加载(我假设它是决定加载框架的MSIExec)。 我也在盒子上安装了VS 2010,但由于我无法控制的原因,我必须使用VS 2008进行项目。如果我将项目升级到VS 2010,一切都按预期运行,因为CA然后定位到.NET 4.0。 在调用自定义操作时,有什么方法可以让MSIExec加载.NET 2.0 / 3.5吗? 更新:我已经更改了CustomAction.config以便它现在具有
<!--<supportedRuntime version="v4.0" />-->
<supportedRuntime version="v2.0.50727"/>
它没有任何区别。 我还发现,尝试将CA加载到导致异常的调试器中是一种行为。如果我在不破坏方法的情况下运行msi,它将按预期运行(无错误)。所以我可以将设置部署为.NET 3.5设置,我只是无法调试CA.     
已邀请:
看起来您无法覆盖MSIExec使用的.Net版本。 Aaron Stebner的博客文章请勿使用托管代码编写自定义操作!说:   此外,如果您创建托管DLL自定义操作,您将命运留在Windows Installer手中,因为它将在所有情况下在计算机上使用最新版本的.NET Framework     

要回复问题请先登录注册