我安装了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。
...
答案 0 :(得分:1)
在支持公共语言运行时程序集的系统上,Windows Installer会在用户的计算机上将MsiNetAssemblySupport property设置为最新版本的.NET Framework版本。您可以检查版本的MsiNetAssemblySupport属性,然后在CA需要时安装更高版本。
答案 1 :(得分:0)
我无法使用InstallShield中的“托管程序集”进行此操作。我仍在使用InstallShield进行安装,但我使用的是WiX DTF(部署工具基础)自定义操作,它在不同版本中运行良好。