Estoy intentando escribir un programa que descargue Team Viewer y lo instale y, si ya está instalado, inicie teamviewer desde los archivos de programa en lugar de volver a descargarlo.

Lo tengo para que descargue e instale teamviewer en la carpeta correcta, pero no puedo averiguar cómo decirle a mi programa que busque en Archivos de programa (x86) 64 bits o archivos de programa para 32 bits busque el directorio y los subdirectorios de teamviewer.exe y lanzar el programa. Aquí está el código que tengo hasta ahora.

Gracias.

Lo resolví usando este código. Busca Teamviewer en la carpeta de archivos de programa correcta y ejecuta el programa. Esto no comprueba si lo tiene instalado o no, tengo una comprobación anterior en mi programa que lo detecta, pero sería fácil de agregar.

private void teamviewerbtn_Click(object sender, EventArgs e)
    {
        //start button

        if (Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE").Contains("64"))
        {
            string path = @"c:\Program Files (x86)\Teamviewer\"; //specify starting folder location for searching
            string searchPattern = "teamviewer.exe*"; //what do you want to search for?

            DirectoryInfo di = new DirectoryInfo(path);

            FileInfo[] files =
                di.GetFiles(searchPattern, SearchOption.AllDirectories);

            foreach (FileInfo file in files)
            {
                string tvE = (file.FullName.ToString()); //takes found file and references full file path
                Process.Start(tvE);
            }
        }
        else
        {
            string path = @"c:\Program Files\Teamviewer\"; //specify starting folder location for searching
            string searchPattern = "teamviewer.exe*"; //what do you want to search for?

            DirectoryInfo di = new DirectoryInfo(path);

            FileInfo[] files =
                di.GetFiles(searchPattern, SearchOption.AllDirectories);

            foreach (FileInfo file in files)
            {
                string tvE = (file.FullName.ToString()); //takes found file and references full file path
                Process.Start(tvE);
            }
        }   

        //end button
    }
c#
2
Boundinashes6 7 may. 2012 a las 03:55
Entonces, ¿todo lo que necesita es encontrar la ruta de la carpeta de archivos de programa en cualquier ventana de 32/64 bits?
 – 
Jonas T
7 may. 2012 a las 03:59
1
Es posible que desee ser un poco más descriptivo en los nombres de sus variables. (button6 significa literalmente nada)
 – 
Cole Johnson
7 may. 2012 a las 04:16
Ex.Message.ToString () solo puede ser ex.Message
 – 
Cole Johnson
7 may. 2012 a las 04:18
Botón 6 en solo el botón que estoy presionando para descargar teamviewer. @ Jonas estoy tratando de ubicar teamviewer.exe ya sea en archivos de programa x86 o archivos de programa regulares dependiendo del sistema operativo, y devuelva la ruta del archivo como: C: \ archivos de programa (x86) \ teamviewer \ version7 \ teamviewer.exe
 – 
Boundinashes6
7 may. 2012 a las 04:19

1 respuesta

La mejor respuesta
if (files.Length == 1)
{
    Process.Start(files[0]);
}
0
Cole Johnson 7 may. 2012 a las 04:17
Lo que realmente estoy buscando es una forma de buscar C: \ archivos de programa \ teamviewer y ubicar el archivo Teamviewer.exe y devolver su ruta, es decir: c: \ archivos de programa \ teamviewer \ version7 \ teamviewer.exe, entonces puedo usar el código como esta cadena tvE = @ "RUTA ENCONTRADA DESDE PROGRAMFILES"; Process.Start (tvE);
 – 
Boundinashes6
7 may. 2012 a las 04:29
El problema surge del hecho de que simplemente escanea el principal. TeamViewer es de 32 bits, así que simplemente cambie Environment.SpecialFolder.ProgramFiles a Environment.SpecialFolder.ProgramFiles32
 – 
Cole Johnson
7 may. 2012 a las 04:39
En Environment.SpecialFolder.ProgramFiles de 32 bits es siempre "Archivos de programa", mientras que Environment.SpecialFolder.ProgramFiles32 es "Archivos de programa" en 32 bits y "Archivos de programa (x86)" en 64 bits
 – 
Cole Johnson
7 may. 2012 a las 04:40
Si se agrega a la ruta durante la instalación, puede aprovechar eso :)
 – 
James Manning
7 may. 2012 a las 07:28
Entonces, ¿no podría simplemente usar 'Process.Start ("teamviewer.exe")'?
 – 
Cole Johnson
7 may. 2012 a las 07:29