Question

J'ai une application qui utilise ClickOnce à déployer, et je l'ai réussi à obtenir le démarrage de l'application lorsqu'un utilisateur se connecte.

Mes questions sont que j'ai besoin l'application pour démarrer caché (je ne veux pas un utilisateur d'avoir à réduire au minimum jusqu'à ce qu'ils exigent - je veux asseoir dans le plateau de système). Avant d'utiliser ClickOnce J'ai simplement vérifié les arguments pour voir si « / silencieux » a été transmis. Il semble y avoir aucun moyen de le faire dans une application ClickOnce (vous pouvez vérifier si une chaîne de requête URI est passé, mais parce que c'est lancé depuis un .appref-ms raccourci, il semble y avoir aucun moyen d'obtenir l'argument /silent)

Comment puis-je obtenir l'argument /silent, ou comment puis-je savoir si l'application a commencé à la suite de l'enregistrement de l'utilisateur sur (plutôt que l'utilisateur de démarrer l'application à partir d'un raccourci)?

Il est important que toute solution proposée ne nécessite pas d'autorisations d'administrateur, mais la langue utilisée est pas aussi important que je peux probablement le port à .NET.

Était-ce utile?

La solution

Je ne pense pas qu'il y ait un moyen très propre à faire car les arguments de commande ne fonctionnent pas, et vous ne pouvez pas utiliser des arguments de chaîne de requête.

Cependant, essayez de déployer un autre petit exécutable avec votre déploiement ClickOnce. Il serait chargé d'établir un drapeau « de démarrage » (dans un fichier de configuration, registre, peu importe), puis de lancer votre application réelle. Votre application vérifiera le drapeau pour déterminer si elle doit lancer en silence, puis réinitialiser le drapeau. Ensuite, vous devriez juste le petit début exécutable sous Windows plutôt que votre application principale.

Bien sûr, je ne l'ai pas essayé les cela.

Autres conseils

Vous pouvez le faire de cette façon:

Dans votre principale méthode:

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

Ensuite, vous pouvez simplement passer l'argument « minimisé » avec l'ClickOnce application pour démarrer réduite au minimum.

Pour commencer mon application ClickOnce automatiquement, je fais un raccourci comme ceci:

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

'MyMiniTools' est le nom de l'application, et 'Outils LVH' est le nom de l'éditeur.

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

Une autre méthode pour permettre le démarrage automatique avec ClickOnce est expliqué dans application ClickOnce et Autostart désinstallation propre ou la façon de personnaliser l'installation ClickOnce .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top