1

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

我通过从前一个团队提供的MSI逆向工程创建了InstallShield项目(称为它)。它们的配置现在相同。"MyClient.ISM"

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

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

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

msiexec /lvx C:\inst_server.log /i "C:\MyClient.MSI"

问题似乎是由于2769 error. 由此产生的日志文件中的错误位置如下:

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

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

4

2 回答 2

0

我看到这是一个较老的问题,但我想我会试一试,以防有人需要帮助。

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

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

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

如果您已确保正确部署 .NET Framework,但仍有问题,请考虑调试程序集中的安装程序类。(在这里查看更多信息:http ://www.hanselman.com/blog/BackToBasicsUsingFusionLogViewerToDebugObscureLoaderErrors.aspx )

于 2009-08-19T23:03:16.110 回答
0

在 InstallShield 2009 基本 MSI 项目中,我也遇到了错误 1001。尝试将自动生成的 _isconfig.xml 添加到 Support Files\Language Independent 节点。这将确保在调用 InstallerClass 等 .NET 相关操作时正确启动 CLR。

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

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

另请参阅:Q108690:信息:使用 Cith Microsoft Visual Studio .NET 2003 或 2005 创建的合并模块

于 2009-08-30T13:52:05.727 回答