Pan*_*mar 9 c# windows-installer custom-action visual-studio-setup-proje visual-studio-2013
那里有很多线索和问题。但我面临的错误是在完全不同的情况下。那么我在这里解释一下。在本文安装程序类和自定义操作的帮助下
我已添加项目主要输出(具有安装程序类)作为提交内的自定义操作。具有自定义操作条件:NOT REMOVE。但是当我尝试运行 MSI 时,它在弹出窗口中显示错误, 错误 1001。错误 1001。InstallUtilLib.dll:未知错误。
以下是我的代码和安装程序日志:
Project Build 的目标平台是任何 CPU,安装程序是 x86 位。
安装助手.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();
}
}
Run Code Online (Sandbox Code Playgroud)
项目的主要输出作为自定义操作包含在提交操作下,并具有以下参数:
CustomActionData : /targetDir="[TARGETDIR]\", /srcDir="[SOURCEDIR]\"
条件:不可移除
以及 eventviewer 中的日志快照:
找不到源 MsiInstaller 中事件 ID 11001 的描述。您的本地计算机上未安装引发此事件的组件,或者安装已损坏。您可以在本地计算机上安装或修复该组件。
如果事件源自另一台计算机,则显示信息必须与事件一起保存。
该活动包含以下信息:
产品:MyApp - 错误 1001。错误 1001。InstallUtilLib.dll:未知错误。
(无效的)
(无效的)
(无效的)
(无效的)
(无效的)
消息资源存在,但在字符串/消息表中找不到该消息
并在%TEMP%文件夹中生成日志:
错误 1001。错误 1001。InstallUtilLib.dll:未知错误。
=== 记录停止:11/16/2017 19:43:53 ===
无论我更改什么,无论是自定义操作条件,还是在安装或提交或两者下添加自定义操作。我遇到了相同的错误和相同的日志。有时它可以使用相同的配置,但随后不会调用自定义操作。为了避免错误,我必须删除自定义操作。但这不是要求。我无法理解,这个错误意味着什么?
我尝试从头开始创建一个新的类似项目并添加自定义操作。有效。但目前的项目并非如此。可能的原因是什么?
我将不胜感激任何帮助。我真的被困住了。提前致谢。
========编辑========
我们正在使用add-inexpress(v8.2.4371)框架来开发office-addin。它会自动添加adxRegistrator.exe作为 customAction (用于安装、回滚和卸载模式)以执行某些操作,例如注册加载项等。
系统是64位类型。项目针对4.0 .net框架版本。
我正在为安装添加我自己的自定义操作,提交自定义操作模式。是否可以添加两个自定义操作?如果是的话我应该/必须注意哪些事情?例如,它们的条件或入口点参数。
对于使用 InstallUtilLib.dll 的其他人:尝试安装使用 Visual Studio 安装和部署项目类型构建的 .MSI 时出现未知错误:
我最近在将 Visual Studio 安装和部署项目迁移到新计算机和新版本的 Visual Studio(其中安装的 .NET 框架可能不同)后遇到此错误。就我而言,从安装项目中删除我的 .NET 自定义操作就像OP一样消除了错误,但我的代码不是根本原因。
根本原因是忘记检查安装项目的启动条件(查看 -> 启动条件),我需要更改 .NET Framework 启动条件以匹配我迁移到的计算机上实际安装的内容(而不是原来的内容)在旧的开发 PC 上)。此外,您还需要通过右键单击“安装和部署”项目并单击“属性”来更改先决条件。然后单击“先决条件”按钮,并确保 .NET Framework 先决条件与您的应用程序的目标版本以及您用于启动条件的版本相匹配。
我无法使用这些自定义操作参数重现此情况,因此我将列出您应该查看的内容:
在架构上保持一致。如果您安装了 x86 的 TargetPlatform,请使用针对 x86 的自定义操作代码。InstallUtilLib 的内部结构将加载固件版本,然后尝试通过反射加载类,架构不匹配可能会导致托管 Dll 失败。
确保您已为自定义操作安装了 .NET FW。
您的提交 CA 上不需要 NOT REMOVE 条件。根据定义,它只会在安装的提交阶段被调用。
您必须在自定义操作的所有节点上都具有自定义操作:安装、提交、回滚、卸载。它们之间存在某种内部状态,并且它们都是必要的。此外,您的代码没有显示任何卸载或回滚方法。看起来您手动添加了此代码,而不是使用向导添加安装程序类。