سؤال

لدي تطبيق يستخدم ClickOnce. لنشر، وقد تمكنت من الحصول على التطبيق بدءا عند تسجيل المستخدم في.

مشكلاتي هي أنني بحاجة إلى التطبيق للبدء المخفية (لا أريد للمستخدم تقليلها إلى تقليلها حتى تتطلب ذلك - أريد أن أجلس في علبة النظام). قبل استخدام ClickOlce، قمت ببساطة بفحص الوسائط لمعرفة ما إذا كان "/ صامتة" تم تمريره. يبدو أنه لا توجد وسيلة للقيام بذلك في تطبيق ClickOnce (يمكنك التحقق مما إذا كانت سلسلة استعلام URI مرت، ولكن لأن هذا هو تشغيل من اختصار .APRAPREF-MS هناك يبدو أنه لا توجد وسيلة للحصول على /silent جدال)

كيف يمكنني الحصول على /silent حجة، أو كيف يمكنني معرفة ما إذا كان التطبيق قد بدأ نتيجة تسجيل المستخدم على (بدلا من المستخدم بدء التطبيق من اختصار)؟

من المهم أن يتطلب أي حل المقترح أذونات المسؤول، ولكن اللغة المستخدمة ليست مهمة كما يمكنني أن أمنفها إلى .NET.

هل كانت مفيدة؟

المحلول

لا أعتقد أن هناك طريقة نظيفة للغاية للقيام بذلك نظرا لأن حجج الأوامر لا تعمل، ولا يمكنك استخدام وسيطات سلسلة الاستعلام.

ومع ذلك، حاول نشر ملف قابل للتنفيذ صغير آخر مع نشر ClickOnce الخاص بك. سيكون مسؤولا عن تحديد علامة "بدء التشغيل" (في ملف التكوين، التسجيل، أيا كان) ثم بدء تطبيقك الفعلي. سيحقق طلبك العلم لتحديد ما إذا كان يجب تشغيله بصمت ثم إعادة تعيين العلم. ثم سيكون لديك مجرد بداية قابلة للتنفيذ مع Windows بدلا من تطبيقك الرئيسي.

بالطبع لم أحاول أيا من هذا.

نصائح أخرى

يمكنك القيام بذلك بهذه الطريقة:

في الطريقة الرئيسية الخاصة بك:

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

ثم يمكنك فقط تمرير الوسيطة "التقليل" مع تطبيق ClickOnce لبدء تشغيله.

لبدء تطبيق My ClickOnce تلقائيا، أقوم باختصار مثل هذا:

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

"MyMinItools" هو اسم التطبيق، و "أدوات LVH" هي اسم الناشر.

انشاء اختصار:

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

يتم تفسير طريقة أخرى لتمكين AutoStart مع ClickOnce في ClickOnce Application Autostart وتنظيف إلغاء التثبيت أو طريقة تخصيص تثبيت ClickOnce.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top