从VS2010安装程序项目安装程序时出现System.BadImageFormatException

Mat*_*att 4 installer visual-studio-2010

尝试从VS2010 .NET 4安装程序项目安装Windows服务时出现此错误:

"初始化安装时发生异常:System.BadImageFormatException.无法加载文件[文件名] .exe或其依赖项之一.此程序集由比当前加载的运行时更新的运行时构建,无法加载."

我无法弄清楚造成这种情况的原因.我的解决方案中的所有项目都是针对.NET Framework 4编译的,安装程序解决方案依赖项需要.NET 4.我已经清理/重建了解决方案和项目无济于事.有什么明显的东西我不见了吗?

Gre*_*som 9

如果您的安装程序正在安装64位dll,则会发生这种情况.

如果将64位托管自定义操作添加到安装项目,则Visual Studio生成过程会将32位版本的InstallUtilLib.dll作为InstallUtil嵌入到MSI中.反过来,加载32位.NET Framework以运行64位托管自定义操作并导致BadImageFormatException异常.

要解决此问题,请将32位InstallUtilLib.dll替换为64位版本.

  1. 从Windows Installer SDK打开Orca中生成的.msi.
  2. 选择二进制表.
  3. 双击单元格[二进制数据]以获取记录InstallUtil.
  4. 确保选中"从文件名读取二进制文件",然后单击"浏览"按钮.
  5. 浏览到%WINDIR%\ Microsoft.NET\Framework64\v2.0.50727.
  6. Framework64目录仅安装在64位平台上,对应于64位处理器类型.
  7. 选择InstallUtilLib.dll.
  8. 单击"打开"按钮.
  9. 单击"确定"按钮.