自定义操作的CLR版本

时间:2012-12-10 17:06:41

标签: windows-installer installshield

我安装了InstallShield 2010基本MSI,并在应用程序中安装了托管代码.dll自定义操作。如果我使用.NET 3.5构建它,则自定义操作会起作用,但如果我使用4.0构建它则会失败。

我在手册中看到了设置CLR版本的参考,但我对如何在MSI中实际执行此操作感到茫然。

感谢所有帮助。

修改1

我运行了一个运行带有.NET版本4的CA版本的简单MSI,这里有一些从日志中挑选出来的有趣内容:

  

属性(S):RedirectedDllSupport = 2

     

属性(S):MsiWin32AssemblySupport = 5.1.2600.5512

     

Property(S):MsiNetAssemblySupport = 4.0.30319.1

     

...

     

MSI(c)(0C:10)[12:12:15:689]:连接到CA接口的服务。

     

InstallShield:成功加载CLR

     

InstallShield:加载程序集[#v4.dll]

     

InstallShield:解析程序集文件密钥[#v4.dll]。

     

InstallShield: - 已解决为C:\ Program Files \ My Company Name \ My   产品名称\ V4.dll

     

InstallShield:从路径C:\ Program Files \ My Company加载程序集   名称\我的产品名称\ V4.dll

     

InstallShield:无法加载托管自定义操作程序集   [#v4.dll]:无法加载文件或程序集'file:/// C:\ Program   文件\我的公司名称\我的产品名称\ V4.dll'或其中一个   依赖。此程序集由比运行时更新的运行时构建   当前加载的运行时并且无法加载。

     

行动结束12:12:15:v4Test。返回值3。

     

...

2 个答案:

答案 0 :(得分:1)

在支持公共语言运行时程序集的系统上,Windows Installer会在用户的计算机上将MsiNetAssemblySupport property设置为最新版本的.NET Framework版本。您可以检查版本的MsiNetAssemblySupport属性,然后在CA需要时安装更高版本。

答案 1 :(得分:0)

我无法使用InstallShield中的“托管程序集”进行此操作。我仍在使用InstallShield进行安装,但我使用的是WiX DTF(部署工具基础)自定义操作,它在不同版本中运行良好。