1

自 2 天以来,我一直在努力使用 Windows Installer。我在 Visual Studio 2010 下有 ac# 项目,我的应用程序只是使用 Spring.Net 填充 ControlTab。Spring 配置文件位于库类中(再次没有自定义操作,一切正常)。

基于演练:http: //msdn.microsoft.com/en-us/library/9cdb5eda%28v=vs.100%29.aspx。我创建了一个与我的项目具有相同结构的简单项目:Windows 窗体应用程序使用位于类库中的 spring 配置文件来初始化窗体上的按钮。我实施的自定义操作适用于这个简单的项目,但是当我对项目执行完全相同的步骤时,msi 文件的安装失败并出现以下错误(使用 msiexe 检索):

#DEBUG: Error 2835:  The control ErrorIcon was not found on dialog ErrorDialog
When installing this package, an unexpected error has occurred. This may indicate a problem with this package. The error code is 2835th Arguments: ErrorIcon, ErrorDialog,
Error 1001. Error 1001. The installer types in the assembly C:\...\TestSpring.exe can not be queried. -> At least one type in the assembly can not be loaded. Retrieve the LoaderExceptions property if you need further information.
MSI (s) (60!C4) [09:10:37:263]: 
MSI (s) (60:70) [09:10:37:263]: Leaked MSIHANDLE (111) of type 790531 for thread 20932
MSI (s) (60:70) [09:10:37:263]: Note: 1: 2769 2: _489C2921_6B59_42E8_A55A_399B1A3D2382.install 3: 1 
DEBUG: Error 2769:  Custom Action _489C2921_6B59_42E8_A55A_399B1A3D2382.install did not close 1 MSIHANDLEs.
When installing this package, an unexpected error has occurred. This may indicate a problem with this package. The error code is 2769. Argumente: _489C2921_6B59_42E8_A55A_399B1A3D2382.install, 1, 
CustomAction _489C2921_6B59_42E8_A55A_399B1A3D2382.install returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Aktion beendet um 09:10:37: InstallExecute. return value 3.

我猜错误是尝试安装应用程序时代码为 1603 的错误(我使用演练中给出的安装程序类)

我比较了我的两个项目,没有区别(我的项目比用于测试自定义操作的项目大)

我试过了: 我的安装失败(缺少 DLL)。我该怎么做才能纠正这个问题?:将所有选中的项目设置为 Build 并尝试将配置从 Debug 更改为 Release。完成后,我关闭属性窗口,重新打开它:模式不再是 Release,而是 Debug。我使用 msiexe 和 orca 试图找到我的错误原因,但我找不到它。

我阅读:Windows 安装程序:错误 1001,CustomAction _xxxxx.install 返回实际错误代码 1603,但它似乎与我的情况不同

关于我可以检查什么的任何想法?

ps:我使用自定义操作尝试了我的项目,但将 InstallerClass 设置为 False,然后在安装结束之前启动应用程序,我关闭应用程序,然后安装运行直到结束。在安装结束之前启动应用程序是否正常?

更新1

我在我的项目上再次完成了所有过程:

  • 创建安装程序类
  • 将 Installclass 设置为 True

但是我没有实现类 Installer 的任何方法,所以我的 Installer1 类是:

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

而且我仍然检索到相同的错误。因此,我的 Installer1 类不会出现错误,因为我的带有默认内容的 Installer 类的项目也会引发相同的错误。那么错误是否来自.NET?但是为什么它与我在我的简单项目上所做的第一个测试一起工作呢?

update2:我创建了一个没有用于存储 dll 的文件夹的安装,安装正常。

我用 msiexec 创建了日志文件并使用了 logview,但我没有找到为什么我的安装程序失败,即使安装在没有 DLL 文件夹的情况下工作,我仍然不知道为什么我的安装程序在我定义一个存储 dll 的文件夹时失败。

4

0 回答 0