Domanda

Ho un'applicazione che utilizza ClickOnce da implementare, e sono riuscito a ottenere il applicazione di partenza quando un utente accede a.

I miei problemi sono che ho bisogno l'applicazione per avviare nascosta (non voglio un utente di avere a ridurre al minimo fino a quando non lo richiedono - Voglio che sedersi nella barra delle applicazioni). Prima di utilizzare ClickOnce ho semplicemente controllato gli argomenti per vedere se "/ silent" è stata approvata nel. Non sembra esserci alcun modo per fare questo in un'applicazione ClickOnce (è possibile controllare se una stringa di query URI viene passato, ma perché questa è eseguito da un .appref-ms scorciatoia sembra che vi sia alcun modo per ottenere l'argomento /silent)

Come posso ottenere l'argomento /silent, o Come faccio a sapere se l'applicazione è stata avviata a seguito della registrazione utente (piuttosto che l'utente di avviare l'applicazione da un collegamento)?

E 'importante che qualunque soluzione proposta non richiede autorizzazioni di amministratore, ma il linguaggio usato non è così importante che posso probabilmente porta a .NET.

È stato utile?

Soluzione

Non credo ci sia un modo molto pulito per fare questo in quanto argomenti di comando non funzionano, e non è possibile utilizzare argomenti stringa di query.

Tuttavia, provare a distribuire un piccolo eseguibile con la vostra distribuzione ClickOnce. Sarebbe responsabile per l'impostazione di un flag "avvio" (in un file di configurazione, Registro di sistema, a prescindere) e poi lanciare l'applicazione effettiva. L'applicazione dovrebbe controllare il flag per determinare se esso dovrebbe lanciare in silenzio e poi ripristinare il flag. Poi si sarebbe solo avere la piccola start eseguibile con Windows, piuttosto che l'applicazione principale.

Naturalmente non ho provato nulla di tutto questo fuori.

Altri suggerimenti

Si può fare in questo modo:

Nel vostro Main-metodo:

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();
}

Poi si può solo passare l'argomento 'minimizzato' con il ClickOnce applicazione per avviarlo ridotto al minimo.

Per iniziare la mia applicazione ClickOnce automaticamente, faccio un collegamento come questo:

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

'MyMiniTools' è il nome dell'applicazione, e 'LVH Strumenti' è il nome dell'editore.

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();
    }

Un altro metodo per abilitare l'avvio automatico con ClickOnce è spiegato in ClickOnce applicazione autostart e disinstallazione pulita o il modo di personalizzare l'installazione ClickOnce .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top