Я занимаюсь разработкой приложения VB.NET для Windows Forms для редактирования файлов с расширением *.fltp
и хочу использовать развертывание ClickOnce.Но часть моих манифестов, связанная с файловой ассоциацией, похоже, не работает.
Начиная с моего времени программирования на C ++, я понимаю, что двойной щелчок по файлу в проводнике Windows заставляет Windows выполнять следующие действия.:
- Сканирование реестра на расширение файла (скажем,
*.doc
) - Обнаружение в реестре того, что расширение файла зарегистрировано в схеме командной строки (в данном случае,
winword.exe %1
) - Запустите эту командную строку (то есть
winword.exe "Untitled.doc"
).
Теперь, ClickOnce не предлагает такой детальный контроль;в MSVS я просто захожу в параметры публикации и связываю свое приложение с *.fltp
.Я предположил, что это следует общей схеме внесения App.exe %1
в реестр, и написал свое заявление в эту спецификацию.
При развертывании приложения создается впечатление, что приложение зарегистрировано в *.fltp
файлах: их значок и описание изменяются, и двойной щелчок по ним в проводнике Windows открывает приложение.
Но командная строка пуста, поэтому мое приложение просто открывает пустой новый документ!Когда я помещаю в один из моих файлов
Private Sub Init(sender As Object, e As EventArgs) Handles MyBase.Load
MsgBox(Command)
End Sub
, развернутое приложение просто показывает пустое окно сообщения.(То же поведение проявляется, если я использую System.Windows.Forms.Messagebox.Show
, System.Environment.GetCommandLine
или My.Application.CommandLineArgs
- виноваты не устаревшие функции VB.)
Записи реестра аналогичны тем, что для приложения C ++, но не идентичны, поэтому я не могу понять, что они делают.
Как узнать, на каком файле дважды щелкнул пользователь?