0

我需要您对此的意见:是否可以在安装项目中使用企业库日志记录 dll?

这是我所做的:我创建了一个安装项目,它将调用一个 Windows 窗体来安装数据库。当我安装该项目时,它确实调用了 windows 窗体。但是,当我点击“安装”按钮时,似乎有问题,我不知道它在哪里。然后显示另一条弹出消息,表示它无法找到日志记录配置。

但是 windows 窗体的配置文件在那里,其中包括日志记录 dll 的配置。我不知道在哪里调查。

请在这件事上给予我帮助?

以下是错误消息: 在此处输入图像描述

更新 我观察到,当我按原样运行 exe 文件时,企业库日志配置工作。但是对于安装项目,它不会寻找它。对此有什么帮助吗?

下面是这个的代码:

[RunInstaller(true)]
public partial class IPWInstaller : Installer
{
    public IPWInstaller()
    {
        InitializeComponent();
    }

    public override void Install(IDictionary stateSaver)
    {
        base.Install(stateSaver);
        string targetPath = Context.Parameters["TargetDir"];
        InstallDatabase db = new InstallDatabase(targetPath);

        DialogResult dbResult = db.ShowDialog();

        if (dbResult != DialogResult.OK)
        {
            throw new InstallException("Database is not installed.");
        }

        ConfigureFiles config = new ConfigureFiles(targetPath);
        DialogResult configResult = config.ShowDialog();

        if (configResult != DialogResult.OK)
        {
            throw new InstallException("Config files are not saved correctly.");
        }
    }
}

最新更新:

我试图将某个配置的值设置为我的消息框。这是我运行安装项目时的结果。 在此处输入图像描述

有没有办法在安装项目中调用我的 app.config

4

1 回答 1

1

至少有几件事可能会出错。

如果您以交互式用户身份运行该应用程序,则该应用程序不会像它那样运行。它是从一个对您的预期环境一无所知的 msiexec.exe 进程调用的,例如工作目录。因为您从资源管理器外壳运行而发生的任何自动事情都不会发生。您使用的任何路径都需要完整且明确。我认为您可能需要显式加载设置文件。

在每台机器安装中可能发生的其他事情是自定义操作使用系统帐户运行,因此任何假定您有权访问数据库的代码、文件夹等用户配置文件项目都可能失败。

另一个问题是,当从 VS 自定义操作调用时,Windows 窗体通常不能正常工作。这不是很好的工作,因为该环境不是窗口消息等所需的 STA 线程模型。

一般来说,最好在安装后第一次启动应用程序后运行这些配置程序,因为那时您处于正常环境中,调试和测试很简单,如果数据库丢失,用户可以再次运行程序来重新创建它卸载并重新安装设置。

于 2014-12-09T17:20:24.260 回答