从InstallShield 2009 MSI安装.NET服务时出现问题-自定义操作未关闭1个MSI句柄

从InstallShield 2009 MSI安装.NET服务时出现问题-自定义操作未关闭1个MSI句柄,.net,windows,service,windows-installer,installshield,.net,Windows,Service,Windows Installer,Installshield,我正在使用InstallShield 2009为我继承的代码库生成一个MSI。该代码由VB6和.NET2.0代码(C#和C++)组成。我正在Windows XP SP2上开发和安装 我创建了InstallShield项目(称之为“MyClient.ISM”),方法是从上一个团队提供的MSI中对其进行反向工程。它们的配置现在是相同的 然后我将InstallShield配置为生成MSI。这是没有错误的。 然而,当我尝试运行我的MSI时,它失败了两次 “错误1001 InstallUtilLib.dl

我正在使用InstallShield 2009为我继承的代码库生成一个MSI。该代码由VB6.NET2.0代码(C#和C++)组成。我正在Windows XP SP2上开发和安装

我创建了InstallShield项目(称之为“MyClient.ISM”),方法是从上一个团队提供的MSI中对其进行反向工程。它们的配置现在是相同的

然后我将InstallShield配置为生成MSI。这是没有错误的。 然而,当我尝试运行我的MSI时,它失败了两次

“错误1001 InstallUtilLib.dll:未知错误”

对话框,然后成功退出它所做的更改 然后我用msiexec命令运行了
MyClient.MSI
。例如

msiexec /lvx C:\inst_server.log /i "C:\MyClient.MSI"
问题似乎是由
2769错误造成的。由此产生的日志文件中的错误位置如下所示:

DEBUG: Error 2769: Custom Action _A11801EAD1E34CFF981127F7B95C3BE5.install 
did not close 1 MSIHANDLEs.

此自定义操作正在尝试安装.NET服务。因此,我随后转到InstallShield,删除了所有自定义操作(安装、卸载、提交和回滚以及相关的SetProperty),并再次构建和安装。这是可行的,但服务已不再安装。我现在需要使用InstallShield方法安装这些.NET服务

我知道这是一个老问题,但我想我会尝试一下,以防有人需要帮助

据我观察,所有错误1001都与.NET Framework有关

首先,我要确保您正在使用msi构建setup.exe引导程序。使用InstallShield发布向导执行此操作,并确保在引导程序中包含应用程序所需的.NET Framework版本。可能是您的测试机器没有安装所需版本的.NET Framework

您提到的自定义操作是由InstallShield在生成过程中自动生成的。它创建了包装器自定义操作来调用组件中安装程序类中的方法。在您的情况下,这是组件的安装程序类之一的.install方法


如果您确保正确部署.NETFramework,并且仍然存在问题,请考虑调试程序集中的安装程序类。(查看此处了解更多信息:)

我在InstallShield 2009基本MSI项目中也遇到了错误1001。 尝试将自动生成的_isconfig.xml添加到支持文件\语言独立节点。这将确保在调用与.NET相关的操作(如InstallerClass)时触发正确的CLR

在我的例子中_isconfig.xml内容引用了.NET 2.0运行时,但也可以引用1.0\1.1

<?xml version="1.0"?>
<configuration>
    <startup>
        <supportedRuntime version="v2.0.50727"/>
    </startup>
</configuration>

另见: