0

AFAIK Windows 8 附带 .NET Framework 4.5,不包括 2.0 版本。我有一个针对 2.0 版的应用程序,现在如果我在 Windows 8 中运行它,它会说“您需要安装 .net framework 2.0”。据我从 msdn 阅读,所有 .net 版本都具有向后兼容性,如果您希望您的应用程序在较新版本上运行,您需要在 app.config 文件中说明支持的框架版本。我准备了下面的配置文件,现在我可以运行 msi,但是,在执行自定义操作时 msiexec 失败并给出以下错误“错误 1001.InstallUtilLib.dll:CoreBindToRuntimeHost (hr=0x80070003): 系统找不到路径指定的”。我该如何解决这个错误?我的猜测是它正在寻找 .net framework 2.0 文件夹下的 InstallUtilLib。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" />
    <supportedRuntime version="v3.5" />
    <supportedRuntime version="v3.0" />
    <supportedRuntime version="v2.0.50727" />
  </startup>
</configuration>
4

1 回答 1

1

InstallUtil 有许多缺陷和限制。您会注意到,如果您静默运行安装程序 (/qn),您仍然会收到模式 1001 错误消息。是的,这是错误的。是的,就是这么破。

查看使用 Windows Installer XML (WiX) 部署工具基础 (DTF) 自定义操作重构代码。这是微软的一个开源项目,它解决了这些问题,包括很多你可能不知道的问题。

部署工具基础 (DTF) 托管的自定义操作

WiX 工具集 v3.6

在 Visual Studio 中,您使用 File | 新项目 | Windows 安装程序 XML | C# 自定义操作来创建您的项目。进入项目属性并将 .NET 版本设置为 2.0。删除 4.0 引用。查看 CustomAction.Config 并注意它已设置为支持 2.0、4.0 及更高版本。然后移植你的代码。构建项目并获取 CustomActionName.CA.dll 并将其作为 DLL 自定义操作添加到您的安装程序。

还要意识到,如果您使用的是 Visual Studio 部署项目,它们也会存在许多问题,并且 Microsoft 从 Visual Studio 2012 中删除了该项目类型。

于 2012-10-15T11:29:42.383 回答