开发者

Using C# How to detect if Windows Installer 4.5 is Installed

I am trying to figure out the most efficient way to determine if Windows Installer 4.5 is installed on a machine.

I have a 2.0 application (cannot convert at this time to 3.5) and we are upgrading from MSDE to SQL 2008 Express. One of the requirements of 2008 Express is that Windows Installer 4.5 is installed on the machi开发者_Python百科ne. This application is deployed globally to machines both on and off of an internal network.

I would prefer to run a batch file or C# code to determine the installer version.

Please let me know your recommended methods and provide some code (or links to code).

Thanks!


You can read the file version of the msi.dll library in the system directory:

using System.Diagnostics;
using System.IO;

public bool IsWindowsInstaller45Installed()
{
    FileVersionInfo info;
    string fileName = Path.Combine(Environment.SystemDirectory, "msi.dll");
    try {
        info = FileVersionInfo.GetVersionInfo(fileName);
    } catch (FileNotFoundException) {
        return false;
    }

    return (info.FileMajorPart > 4
            || info.FileMajorPart == 4 && info.FileMinorPart >= 5);
}


Check the version of the MSI.DLL file that's in your System32 directory.

You should be able to use GetFileVersionInfo or GetFileVersionInfoEx to get out the version number.

This MSDN article has some sample code: Unsafe Code Tutorial


Like Ho1 said, you can go by the version of MSI.dll in System32 but you don't need to P/Invoke you can use the FileVersionInfo class found in System.Diagnostics.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜