2009-07-16 4 views
1

Ich habe eine Anwendung, die ClickOnce zu implementieren verwendet, und ich habe es geschafft, die Anwendung Start zu erhalten, wenn sich ein Benutzer anmeldet.Autostart-Clickonce-Anwendung in einem unbeaufsichtigten Modus

Meine Fragen sind, dass ich die Anwendung benötigen bis zu starten Versteckt (ich möchte nicht, dass ein Benutzer es minimieren muss, bis es benötigt wird - ich möchte, dass es in der Taskleiste sitzt). Vor der Verwendung von ClickOnce habe ich einfach die Argumente überprüft, um zu sehen, ob "/ silent" übergeben wurde. Es scheint keine Möglichkeit zu geben, dies in einer ClickOnce-Anwendung zu tun (Sie können überprüfen, ob eine URI-Abfragezeichenfolge übergeben wird) Ausführen von einem. Appref-ms-Verknüpfung scheint es keine Möglichkeit, das /silent Argument zu erhalten)

Wie kann ich das /silent Argument erhalten, oder wie kann ich feststellen, ob die Anwendung als Ergebnis der Benutzeranmeldung gestartet wurde (anstatt dass der Benutzer die Anwendung über eine Verknüpfung startet)?

Es ist wichtig, dass die vorgeschlagene Lösung keine Administratorrechte erfordert, aber die verwendete Sprache ist nicht so wichtig, wie ich sie wahrscheinlich in .NET portieren kann.

Antwort

0

Ich glaube nicht, dass es eine sehr saubere Möglichkeit gibt, dies zu tun, da Befehlsargumente nicht funktionieren und Sie keine Abfragezeichenfolgenargumente verwenden können.

Versuchen Sie jedoch, eine weitere kleine ausführbare Datei mit Ihrer ClickOnce-Bereitstellung bereitzustellen. Es würde dafür verantwortlich sein, ein "Start" -Flag zu setzen (in einer Konfigurationsdatei, Registrierung, was auch immer) und dann die eigentliche Anwendung zu starten. Ihre Anwendung würde das Flag überprüfen, um zu bestimmen, ob es still gestartet werden soll, und dann das Flag zurücksetzen. Dann würden Sie die kleine ausführbare Datei nur mit Windows anstelle Ihrer Hauptanwendung starten.

Natürlich habe ich nichts davon ausprobiert.

+0

Das ist, was ich im Voraus plane - konnte keinen besseren Weg finden, es zu tun! (Wenn Sie dies tun, denken Sie daran, die Verknüpfung zu der Hilfsanwendung nach jedem Upgrade zu aktualisieren). Danke für die Bestätigung ist das, was passieren muss! –

0

Sie können es auf diese Weise tun:

In Ihrem 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 es minimiert zu starten.

Um meine Clickonce-Anwendung automatisch zu starten, ich eine Verknüpfung wie diese machen:

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

Ein weiteres Verfahren mit autostart Clickonce ermöglichen wird in ClickOnce application autostart and clean uninstall or the way to customize ClickOnce installation erläutert.

+0

Wie aktualisiert dieses Handle, wenn der Pfad geändert wird? –

+0

Warum sollte sich der Pfad ändern? Der Pfad, den ich verwende, ist der Speicherort der Datei .appref-ms im Startmenü. Die Benutzer meiner Anwendung verwenden Windows 7 oder Windows 8 und der Autostart funktioniert nach Updates. Ich habe keinen Grund zu denken, dass es mit älteren Windows-Versionen nicht funktionieren würde. – Coder14

Verwandte Themen