Visual Studio安装程序问题:错误1001。错误1001。InstallUtilLib.dll:未知错误。

8

有很多线程和问题存在。但我所面临的错误情况与其他人不同。所以让我在这里解释一下。

借助于这篇文章Installer Class and Custom Actions,我将项目主输出(具有安装程序类)添加为Commit中的自定义操作,并设置自定义操作条件:NOT REMOVE。但是,当我尝试运行MSI时,它会在弹出窗口中给我一个错误,Error 1001. Error 1001. InstallUtilLib.dll: Unknown error.

以下是我的安装程序代码和日志:

项目生成的目标平台是任意CPU,而安装程序是x86位。

InstallHelper.cs

[RunInstaller(true)]
public partial class InstallHelper : System.Configuration.Install.Installer
{
    public InstallHelper()
    {
        InitializeComponent();
    }

    public override void Install(IDictionary stateSaver)
    {
        base.Install(stateSaver);
    }

    public override void Commit(IDictionary savedState)
    {
        base.Commit(savedState);
        //configrureAppAfterInstallation();
    }
}

该项目的主要输出是在提交操作下作为自定义操作包括以下参数:
CustomActionData:/targetDir="[TARGETDIR]\",/srcDir="[SOURCEDIR]\"
条件:NOT REMOVE
事件查看器中的日志快照:
来自MsiInstaller的事件ID 11001的说明无法找到。引发此事件的组件未安装在本地计算机上或安装已损坏。您可以在本地计算机上安装或修复该组件。
如果事件起源于另一台计算机,则必须使用事件保存显示信息。
以下信息已与事件一起包括:
产品:MyApp--错误1001。错误1001。InstallUtilLib.dll:未知错误。
(null)
(null)
(null)
(null)
(null)
消息资源存在,但在字符串/消息表中找不到该消息。
在%TEMP%文件夹中生成的日志:
错误1001。错误1001。InstallUtilLib.dll:未知错误。
===日志记录停止:2017年11月16日19:43:53===
无论我更改什么,无论是自定义操作条件还是在安装或提交或两者下添加自定义操作,我都会得到相同的错误和相同的日志。有时它可以使用相同的配置工作,但是然后自定义操作不会被调用。为了避免错误,我不得不删除自定义操作。但那不是要求。我无法理解这个错误的含义?
我尝试从头开始创建一个类似的新项目并添加自定义操作。它有效。但是不适用于当前项目。可能的原因是什么?
我会感激任何帮助。我真的被卡住了。提前致谢。
编辑:
我们使用add-in express(v8.2.4371)框架开发office-addin。它会自动将adxRegistrator.exe作为自定义操作添加(用于安装、回滚和卸载模式)执行某些操作,例如注册插件等。
该系统是64位类型。项目针对4.0 .net框架版本。
我正在为安装、提交自定义操作模式添加自己的自定义操作。是否可以添加两个自定义操作?如果可以,我应该/必须注意哪些事项?例如:它们的条件或入口点参数。

你的项目或者安装程序是否针对 x64 平台? - pinkfloydx33
项目构建的目标平台是任何CPU。而安装程序的目标平台是x86位CPU。 - Pancham Kumar
尝试不使用CustomActionData - 有时它会引起问题。这至少为您提供了一个开始修复此问题的地方。 - PhilDW
@pancham:我并没有建议删除自定义操作,而是建议删除CustomActionData以查看是否可以解决问题。该字符串的内部解析有时会失败,这就是为什么我建议这样做的原因。 - PhilDW
@PhilDW 我也尝试过那样做,但仍然没有成功。 - Pancham Kumar
显示剩余3条评论
2个回答

6

针对使用InstallUtilLib.dll安装Visual Studio Setup & Deployment项目类型构建的.MSI文件时出现“未知错误”的问题:

最近我在将Visual Studio Setup & Deployment项目迁移到新机器和新版本的Visual Studio时遇到了这个错误(已安装的.NET框架可能不同)。就像初始提交中提到的那样,从设置项目中删除我的.NET自定义操作可以解决错误,但是我的代码并不是根本原因。

根本原因是忘记检查“启动条件”(查看->启动条件)设置项目,在那里我需要更改.NET Framework启动条件以匹配我迁移到的机器上实际安装的.NET Framework(而不是旧开发PC上的.NET Framework)。此外,您需要通过右键单击设置和部署项目并单击“属性”来更改先决条件。然后点击“先决条件”按钮,并确保.NET Framework先决条件与您的应用程序目标版本和启动条件使用的版本匹配。


2

针对这些自定义操作参数,我无法重现此问题,因此我将列出您应该查看的内容:

  1. 在架构上保持一致性。如果您的安装TargetPlatform为x86,请使用面向x86的自定义操作代码。InstallUtilLib的内部将加载FW版本,然后尝试使用反射加载您的类,架构不匹配可能会导致该托管DLL失败。

  2. 确保已安装适用于您自定义操作的.NET FW。

  3. 您的提交CA不需要NOT REMOVE条件。根据定义,它只会在安装的提交阶段被调用。

  4. 您必须在所有自定义操作节点上拥有自定义操作:安装、提交、回滚、卸载。它们之间带有一些内部状态,它们都是必要的。此外,您的代码没有显示任何卸载或回滚方法。看起来您是手动添加了此代码,而不是使用向导添加安装程序类。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接