ClickOnce: как получить двойной путь к файлу для программы с одним экземпляром

#vb.net #command #line #clickonce

#vb.net #команда #строка #clickonce

Вопрос:

У меня есть программа с одним экземпляром ClickOnce с ассоциацией файлов. Когда пользователь дважды щелкает файл, я хочу загрузить файл. Это отлично работает в первый раз с этим кодом:

 Dim path as string
If AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData IsNot Nothing Then
   For Each s As String In AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData
       path = New Uri(s).LocalPath
       f.loadConfig(path) 'f.loadConfig() is the routine in my code to load the file
   Next
End If
  

Проблема в том, что программа уже запущена, и пользователь дважды щелкает по второму файлу. Когда я обрабатываю StartupNextInstance и проверяю ActivationData во второй раз, он по-прежнему указывает на первый файл!

В обоих случаях аргументы командной строки отображаются пустыми (я проверил).

Обратите внимание, это для приложения ClickOnce, которое, я думаю, использует ActivationData для передачи пути к файлу с двойным щелчком, по крайней мере, для первого экземпляра.

Комментарии:

1. Посмотрите на Startup и StartupNextInstance события приложения, к которым можно получить доступ из свойств проекта. Первый вызывается при запуске первого экземпляра, а второй — при запуске последующего экземпляра. Оба предоставляют доступ к аргументам командной строки для этого конкретного экземпляра.

2. @jmcilhinney, как указано в OP, аргументы командной строки в обоих случаях пусты. Я не думаю, что ClickOnce использует аргументы командной строки для передачи имени файла для первого или следующих событий запуска.

3. В вашем вопросе нет конкретного упоминания о ClickOnce, и это последнее предложение не читается как очень окончательное, потому что в нем не упоминается, как вы определили, что это так. Помните, что мы знаем только то, что вы нам говорите, поэтому важно, чтобы вы сообщали нам все, что имеет отношение к делу.

4. Да, вы правы. Спасибо, что указали на это. Я обновил сообщение.

5. Черт возьми, думаю, это невозможно? Кажется, это недостаток.