1

我有一个 InstallShield 2010 基本 MSI 安装,其中包含与应用程序一起安装的托管代码 .dll 自定义操作。如果我使用 .NET 3.5 构建自定义操作,它会起作用,但如果我使用 4.0 构建它,它会失败。

我在手册中看到了设置 CLR 版本的参考资料,但我不知道如何在 MSI 中实际执行它。

感谢所有帮助。

编辑 1

我运行了一个简单的 MSI,它使用 .NET 版本 4 运行 CA 构建,以下是从日志中挑选出来的一些有趣的事情:

属性(S):RedirectedDllSupport = 2

属性(S):MsiWin32AssemblySupport = 5.1.2600.5512

属性(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 Product Name\V4.dll

InstallShield:从路径 C:\Program Files\My Company Name\My Product Name\V4.dll 加载程序集

InstallShield:无法加载托管自定义操作程序集 [#v4.dll]:无法加载文件或程序集“file:///C:\Program Files\My Company Name\My Product Name\V4.dll”或其其中之一依赖关系。此程序集由比当前加载的运行时更新的运行时构建,无法加载。

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

……

4

2 回答 2

1

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

于 2012-12-11T17:41:00.620 回答
0

我无法使用 InstallShield 中的“托管程序集”来完成这项工作。我仍在使用 InstallShield 进行安装,但我使用的是 WiX DTF(部署工具基金会)自定义操作,它在各个版本中都能正常工作。

于 2013-01-18T17:35:55.060 回答