Pregunta

Tengo una aplicación que utiliza ClickOnce de implementar, y he logrado obtener el aplicación de partida cuando un usuario se conecta.

Mis problemas son que necesito la aplicación para poner en marcha oculta (no quiero que un usuario tenga que reducir al mínimo hasta que lo requieran - Quiero que se sientan en la bandeja del sistema). Antes de utilizar ClickOnce simplemente comprobado los argumentos para ver si "/ silenciosa" fue aprobada en. No parece haber ninguna manera de hacer esto en una aplicación ClickOnce (se puede comprobar si una cadena de consulta URI se pasa, sino porque se trata de ejecutar desde un acceso directo de .appref-ms no parece haber ninguna manera de conseguir el argumento /silent)

¿Cómo puedo obtener el argumento /silent, o cómo puedo saber si la aplicación se ha iniciado como consecuencia de la tala de usuario en (en lugar de que el usuario inicia la aplicación desde un acceso directo)?

Es importante que cualquier solución propuesta no requiere permisos de administrador, pero el idioma utilizado no es tan importante como es probable que pueda portarlo a .NET.

¿Fue útil?

Solución

No creo que hay una manera muy limpia de hacer esto desde argumentos de comandos no funcionan, y no se puede utilizar argumentos de cadena de consulta.

Sin embargo, tratar de implementar otro pequeño ejecutable con la implementación de ClickOnce. Sería responsable de establecer una bandera "de arranque" (en un archivo de configuración, registro, lo que sea) y luego iniciar su aplicación real. Su aplicación sería comprobar el indicador para determinar si se debe poner en marcha en silencio y luego restablecer el indicador. Entonces sólo tendría el comienzo pequeño ejecutable con Windows en lugar de su aplicación principal.

Por supuesto que no probé nada de esto a cabo.

Otros consejos

Puede hacerlo de esta manera:

En el método principal:

if ((args.Length > 0 && args[0].ToLower() == "minimized") ||
    (AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData != null && AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData.Length > 0 &&
    AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0] == "minimized"))//ClickOnce arguments
{

    //My code to start minimized. My system tray is always visible
    main.WindowState = FormWindowState.Minimized;
    main.Hide();
    main.ShowInTaskbar = false;
}
else {

    //Code to start normally
    main.WindowState = FormWindowState.Normal;
    main.ShowInTaskbar = true;
    main.Show();
}

A continuación, puede sólo tiene que pasar el argumento 'minimizado' con la aplicación ClickOnce-iniciarlo reduce al mínimo.

Para empezar mi aplicación ClickOnce de forma automática, hago un atajo de esta manera:

CreateShortcut(Environment.GetFolderPath(Environment.SpecialFolder.Programs) + @"\LVH Tools\MyMiniTools.appref-ms", Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "\\MyMiniTools", "minimized")

'MyMiniTools' es el nombre de la aplicación, y 'Herramientas HVI' es el nombre del editor.

CreateShortcut:

    public void CreateShortcut(string destinationPath, string shortcutPath, string arguments = "")
    {
        IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell();

        shortcutPath = Path.ChangeExtension(shortcutPath, "lnk");

        IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(shortcutPath);

        shortcut.TargetPath = destinationPath;
        shortcut.IconLocation = destinationPath;
        shortcut.Arguments = arguments;

        shortcut.Description = Path.GetFileNameWithoutExtension(destinationPath);

        shortcut.Save();
    }

Otro método para habilitar el inicio automático con ClickOnce se explica en ClickOnce inicio automático de aplicaciones y desinstalación o la forma de personalizar la instalación de ClickOnce .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top