문제

사용하는 응용 프로그램이 있습니다 Clickonce 배포하고 사용자가 로그인 할 때 애플리케이션을 시작했습니다.

내 문제는 숨겨진 신청서가 필요하다는 것입니다 (사용자가 필요할 때까지 최소화해야 할 필요는 없습니다. 시스템 트레이에 앉기를 원합니다). ClickOnce를 사용하기 전에 "/silent"가 전달되었는지 확인하기 위해 인수를 확인했습니다. ClickOnce 응용 프로그램에서는이 작업을 수행 할 수있는 방법이없는 것으로 보입니다 (URI 쿼리 문자열이 전달되었는지 확인할 수 있지만 이것이 이루어지기 때문입니다. .appref-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 응용 프로그램으로 '최소화 된'인수를 전달하여 최소화를 시작할 수 있습니다.

ClickOnce 응용 프로그램을 자동으로 시작하려면 다음과 같은 바로 가기를 만듭니다.

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

'MyMinitools'는 응용 프로그램의 이름이며 'LVH Tools'는 게시자 이름입니다.

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

ClickOnce를 사용하여 AutosTART를 활성화하는 또 다른 방법은 다음과 같습니다. ClickOnce Application AutosTART 및 청소 제거 또는 ClickOnce 설치를 사용자 정의하는 방법.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top