【问题标题】:Cannot find Microsoft Visual C++ 2015 Redistributable Programmatically C#无法以编程方式找到 Microsoft Visual C++ 2015 Redistributable C#
【发布时间】:2017-05-24 17:07:49
【问题描述】:

您好,我在我的电脑上运行以下代码:

   static void Main(string[] args)
    {
        StringBuilder sbProductCode = new StringBuilder(39);
        int iIdx = 0;
        while (
            0 == MsiEnumProducts(iIdx++, sbProductCode))
        {
            Int32 productNameLen = 512;
            StringBuilder sbProductName = new StringBuilder(productNameLen);

            MsiGetProductInfo(sbProductCode.ToString(),
                "ProductName", sbProductName, ref productNameLen);

            if (sbProductName.ToString().Contains("Microsoft Visual C++ 2015 Redistributable"))
            {
                Int32 installDirLen = 1024;
                StringBuilder sbInstallDir = new StringBuilder(installDirLen);

                MsiGetProductInfo(sbProductCode.ToString(),
                    "InstallLocation", sbInstallDir, ref installDirLen);

                Console.WriteLine("ProductName {0}: {1}",
                    sbProductName, sbInstallDir);

                Console.ReadLine();
            }
        }
    }

循环结束,没有找到任何东西。 但是查看控制面板中的程序和功能我可以清楚地看到它已安装,并且名称与字符串完全匹配。

【问题讨论】:

    标签: c# windows packages


    【解决方案1】:

    这是因为 MSI“产品”与面向用户的程序和功能列表中显示的条目不一一对应。对于安装在 Windows 7 上的 VC 2015 x64 运行时,您需要寻找两个产品:Microsoft Visual C++ 2015 x64 Minimum RuntimeMicrosoft Visual C++ 2015 x64 Additional Runtime

    【讨论】:

    • 谢谢,我如何找出哪些 Redistributables 对应于哪些产品?我试过到处搜索。
    • 您可以通过反复试验确定它们(在干净的系统上安装可再发行软件包,运行该工具,查看出现的产品),或检查解压后的可再发行 MSI/MSM 文件内容(下载、或在 Visual Studio 安装目录中找到)使用 Windows SDK 中的 Windows Installer 工具并从那里获取产品名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 2021-12-23
    相关资源
    最近更新 更多