Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 在旧的msi上复制新的msi,你知道我会怎么做吗?最后一个问题不确定-取决于你是如何启动安装的。如果你正在控制安装过程,你只需检查安装的返回代码……还有一个事件被写入事件日志,你可能可以获取它。是的,我想我将使用命令行方法执行msi,之后使用/quiet,_C# 4.0 - Fatal编程技术网

C# 4.0 在旧的msi上复制新的msi,你知道我会怎么做吗?最后一个问题不确定-取决于你是如何启动安装的。如果你正在控制安装过程,你只需检查安装的返回代码……还有一个事件被写入事件日志,你可能可以获取它。是的,我想我将使用命令行方法执行msi,之后使用/quiet,

C# 4.0 在旧的msi上复制新的msi,你知道我会怎么做吗?最后一个问题不确定-取决于你是如何启动安装的。如果你正在控制安装过程,你只需检查安装的返回代码……还有一个事件被写入事件日志,你可能可以获取它。是的,我想我将使用命令行方法执行msi,之后使用/quiet,,c#-4.0,C# 4.0,在旧的msi上复制新的msi,你知道我会怎么做吗?最后一个问题不确定-取决于你是如何启动安装的。如果你正在控制安装过程,你只需检查安装的返回代码……还有一个事件被写入事件日志,你可能可以获取它。是的,我想我将使用命令行方法执行msi,之后使用/quiet,并在控制台屏幕上生成我自己的小进度报告。现在我只需要尝试一下那些返回码。对不起,我没有接受你的答案,但也许我的问题不够清楚。我已经使用了类似的方案来获取服务器上最新msi的版本。然而,当涉及到客户端时,当客户端运行程序时,再次这样做会很好,但我


在旧的msi上复制新的msi,你知道我会怎么做吗?最后一个问题不确定-取决于你是如何启动安装的。如果你正在控制安装过程,你只需检查安装的返回代码……还有一个事件被写入事件日志,你可能可以获取它。是的,我想我将使用命令行方法执行msi,之后使用/quiet,并在控制台屏幕上生成我自己的小进度报告。现在我只需要尝试一下那些返回码。对不起,我没有接受你的答案,但也许我的问题不够清楚。我已经使用了类似的方案来获取服务器上最新msi的版本。然而,当涉及到客户端时,当客户端运行程序时,再次这样做会很好,但我无法事先知道用于安装程序的msi在哪里。有什么注册表魔法可以让我得到安装的版本吗?我想我可以这样做,如果我让我的自动更新程序将它执行的msi文件一直放在同一个位置,并保持在那里。我只需要找到一种方法来确认msi安装成功,然后再复制新的msi而不是旧的msi,你知道我会怎么做吗?不知道最后一个问题-取决于你是如何启动安装的。如果你正在控制安装过程,你只需检查安装的返回代码……还有一个事件被写入事件日志,你可能可以获取它。是的,我想我将使用命令行方法执行msi,之后使用/quiet,并在控制台屏幕上生成我自己的小进度报告。现在我只需要尝试一下那些返回码。对不起,我没有接受你的答案,但也许我的问题不够清楚。我已经使用了类似的方案来获取服务器上最新msi的版本。然而,当涉及到客户端时,当客户端运行程序时,再次这样做会很好,但我无法事先知道用于安装程序的msi在哪里。是否有某种注册表魔法可以让我获得安装的版本#?
namespace TestCS
{
    using System;
    using WindowsInstaller;

    internal class Test
    {
        private static void Main(string[] args)
        {
            if (args.Length < 1)
            {
                return;
            }

            Console.WriteLine(GetMsiVersion(args[0]));
        }

        private static string GetMsiVersion(string installerPath)
        {
            Type t = Type.GetTypeFromProgID("WindowsInstaller.Installer");
            Installer inst = (Installer)Activator.CreateInstance(t);
            Database d = inst.OpenDatabase(
                installerPath, 
                MsiOpenDatabaseMode.msiOpenDatabaseModeReadOnly);
            View v = d.OpenView(
                "SELECT * FROM Property WHERE Property = 'ProductVersion'");
            v.Execute(null);
            Record r = v.Fetch();
            string result = r.get_StringData(2);
            return result;
        }
    }
}