【问题标题】:How to run InstallScript project from console application如何从控制台应用程序运行 InstallScript 项目
【发布时间】:2013-07-22 12:54:00
【问题描述】:

我创建了一个重大升级(Installscript msi),通过单击 exe 文件执行时运行完美。

我还在创建一个控制台应用程序,它运行相同的 exe,但这次在安装后,连同新版本一起,以前的版本显示在添加/删除程序列表中。

所有组件都安装正确,但是

为什么只有当我从控制台应用程序运行 exe 时才会显示以前的版本?

// Enter the executable to run, including the complete path
start.FileName = @"folder1\MyISProj.exe";
// Do you want to show a console window?
start.CreateNoWindow = true;
start.WindowStyle = ProcessWindowStyle.Minimized;

start.UseShellExecute = false;
start.RedirectStandardOutput = true;

// Run the external process & wait for it to finish
using (Process proc = Process.Start(start))
{
   //proc.WaitForExit();
    proc.Close();
}

我观察到的另一件事是,当我从控制台应用程序调用 exe 时,安装程​​序将打开,并且在接受 EULA 等之后,当实际安装开始时,控制台应用程序将再次被调用。为了阻止这种行为,我在 Main 方法中添加了一个检查,以仅运行一次控制台应用程序。现在,当安装程序再次尝试运行控制台应用程序时,它会检查进程是否已经在运行,如果是,它只是从控制台应用程序返回。

Process[] result = Process.GetProcesses();

foreach (var item in result)
{
    if (item.ProcessName.Contains("MyISProj"))
    {

        Console.WriteLine("There is already a instance running.");
        System.Environment.Exit(0);
        return;
    }

}

但在这样做之后,添加/删除程序列表也会显示两个条目。 我必须做些什么来解决这个问题?我被这个问题困住了。

我正在使用InstallShield 2011 专业版来创建exe。

【问题讨论】:

    标签: c# console-application installshield installscript installscript-msi


    【解决方案1】:

    这里有两个问题。首先是您没有有效的主要升级,这可以通过添加/删除程序中的两个条目来证明。您已更改 ProductCode,但升级表条目(由 FindRelatedProducts 和 RemoveExistingProducts 执行)未检测到先前的安装并将其作为升级的一部分删除。可以通过谷歌搜索找到许多原因。

    第二个原因是 InstallScript MSI 静默安装是一个非常痛苦的问题。它们要求您生成响应文件,然后使用它运行。这是非常脆弱的,也是我建议继续使用 Basic MSI 的一个重要原因,这是一个更简单的支持故事。 ( msiexec /I foo.msi /qn REBOOT=R 并检查 3010 退出代码,表明需要重新启动并被禁止。)

    【讨论】:

    • MsiGetProperty(ISMSI_HANDLE, "ISACTIONPROP1", szOldProductValue, nProSize);正在返回以前的现有产品代码。当我通过单击它执行“exe”时它工作正常,但是当我从控制台应用程序运行相同的 exe 时出现问题。我的不是静默安装。我只是调用exe,如代码所示。它是 exe 而不是 msi,所以我无法使用 msiexec。
    猜你喜欢
    • 2013-02-11
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多