Frage

Ich habe eine Anwendung, die Clickonce zu implementieren, und ich haben es geschafft, das bekommen Anwendung beginnt, wenn sich ein Benutzer anmeldet.

Meine Fragen sind, dass ich die Anwendung benötigen versteckt zu starten (Ich will nicht ein Benutzer, es zu haben, zu minimieren, bis sie es benötigen - ich mag es in der Taskleiste sitzen). Vor der Clickonce mit checkte ich einfach die Argumente, um zu sehen, wenn „/ silent“ in geben wurde. Es scheint kein Weg, dies in einer Clickonce-Anwendung zu tun (Sie können überprüfen, ob ein URI Query-String in übergeben wird, sondern weil dies laufen von einem .appref-ms Verknüpfung scheint es keine Möglichkeit, das /silent Argument zu bekommen)

Wie kann ich das /silent Argument, oder wie kann ich feststellen, ob die Anwendung als Ergebnis der Benutzeranmeldung auf (statt der Benutzer Starten der Anwendung über eine Verknüpfung) begonnen hat?

Es ist wichtig, dass das, was vorgeschlagene Lösung nicht über Administratorrechte, aber die verwendete Sprache erfordert, ist nicht so wichtig, wie ich kann wahrscheinlich Portierung auf .NET.

War es hilfreich?

Lösung

Ich glaube nicht, dass es eine sehr saubere Art und Weise, dies zu tun, da Befehl Argumente nicht funktionieren, und Sie können keine Abfrage-String Argumente verwenden.

Allerdings versuchen, eine andere kleine ausführbare Datei mit Ihrem Clickonce-Bereitstellung bereitstellen. Es wäre für die Einrichtung eines „Startup“ Flag (in einer Konfigurationsdatei, die Registrierung, was auch immer) verantwortlich sein und dann Ihre tatsächliche Anwendung starten. Ihre Anwendung würde überprüfen Sie die Flagge, um zu bestimmen, ob es lautlos starten sollte und dann die Flagge zurückgesetzt. Dann würden Sie nur die kleine ausführbare Start haben unter Windows, anstatt Ihre Hauptanwendung.

Natürlich habe ich nicht versuchen, irgendetwas davon aus.

Andere Tipps

Sie können es auf diese Weise tun:

In Ihrer Main-Methode:

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

Dann können Sie einfach das Argument übergeben ‚minimiert‘ mit der Clickonce-Anwendung zu starten minimiert.

Um meine Clickonce-Anwendung automatisch zu starten, ich mache eine Verknüpfung wie folgt aus:

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

'MyMiniTools' ist der Name der Anwendung, und 'LVH Tools' ist der Name des Publishers.

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

Eine andere Methode zu ermöglichen Autostart mit Clickonce erläutert in Clickonce-Anwendung Autostart und saubere deinstallation oder die Art und Weise Clickonce-Installation anpassen .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top