views:

208

answers:

3

I need to play PowerPoint slides but first I want to check whether PowerPoint or viewer is installed on the machine or not. How can I do that using .NET?

A: 

I am not sure this is the right way to do this. But you can use this

try
{
    //It will throw a WIN32 Exception if there is no associated 
    //application available to open the file.
    Process p = Process.Start("C:\\Sample.pptx");
}
catch (Win32Exception ex)
{
    MessageBox.Show("Powerpoint or Powerpoint viewer not installed\n");
}
Anuraj
I think building your logic upon raising error is not the best solution.
amr osama
I agree with you.
Anuraj
A: 

What about checking if the EXE file for PowerPoint or PowerPoint viewer exists or not by using "Exists Method" from system.io namespace?

Check this.

amr osama
Will it work? Because the User can install the application any where in his system.
Anuraj
+4  A: 

It depends on whether you are trying to tell whether you can view a presentation (*.ppt, *.pptx, etc) or whether you can access the PowerPoint object model.

To check whether there is an associated handler for ppt files, you can do the following:

// using Microsoft.Win32;
private bool CheckPowerPointAssociation() {
    var key = Registry.ClassesRoot.OpenSubKey(".ppt", false);
    if (key != null) {
        key.Close();
        return true;
    }
    else {
        return false;
    }
}

if (CheckPowerPointAssociation()) {
    Process.Start(pathToPPT);
}

To check whether the PowerPoint COM object model is available, you can check the following registry key.

// using Microsoft.Win32;
private bool CheckPowerPointAutomation() {
    var key = Registry.ClassesRoot.OpenSubKey("PowerPoint.Application", false);
    if (key != null) {
        key.Close();
        return true;
    }
    else {
        return false;
    }
}

if (CheckPowerPointAutomation()) {
    var powerPointApp = new Microsoft.Office.Interop.PowerPoint.Application();
    ....
}

Note, however, that in both cases it will only give you a pretty good indication of the availability of PowerPoint. For example, an uninstallation may not have fully removed all traces. Also in my experience selling an Outlook addin for years I've seen certain antivirus programs that interfere with the COM object model in a screwup effort to protect against malicious scripts. So in any case, have robust error handling as well.

Hope this helps!

Josh Einstein