У меня есть развернутое приложение ClickOnce, которое я хочу запустить из VBScript, аналогично запуску Microsoft Word в следующем примере:
Dim word
Set word = CreateObject("Word.Application")
word.Visible = True
Проблема в том, что я не знаю, какой параметр передать функции CreateObject для запуска моего приложения. Где я могу найти главный список приложений, установленных на моем ПК / ярлык для их запуска?





ClickOnce просто так не устанавливается. Обычно они не имеют COM-перехватчиков (для CreateObject) и устанавливаются в изолированной части профиля пользователя (а не профиля этой машины). И не забывайте, что вы также можете получить несколько копий / версий одного и того же приложения одновременно через ClickOnce (из разных мест).
Один из вариантов (в версии 3.5 / VS2008) может заключаться в использовании нового материала ассоциаций файлов ... связать ваше приложение с файлами ".foo", создать пустой файл ".foo" и запустить его. Это может сработать. Посмотрите диалог Publish => Options в VS2008.
В противном случае - в основном, если вы хотите использовать этот тип использования, я подозреваю, что вам нужно будет использовать msi (то есть обычный установщик, а не ClickOnce), чтобы зарегистрировать свое приложение как библиотеку COM (dll). Обратите внимание, что .NET не может быть хорошим COM-сервером (exe), поэтому его нельзя сравнивать напрямую с Word. Если вам нужен .NET COM-сервер, то лучше всего подойдут «обслуживаемые компоненты», но они, как правило, не слишком важны для пользовательского интерфейса.
Для информации, изолированная область находится где-то в районе "% userprofile% \ Local Settings \ Apps \ 2.0", но это просто для интереса, чтобы вы могли ее увидеть ... не пытайтесь запускать ее оттуда.
Спасибо за информацию. Это заставило меня понять, что я могу использовать исполняемый файл .Net вместо vbscript для запуска своего приложения.
Dim program As New Process
'Try to run a .Net click-once application
Try
Dim shortcut As String = Environment.GetFolderPath(Environment.SpecialFolder.StartMenu)
shortcut = shortcut + "specific\shorctut\path\shortcut.appref-ms"
program .StartInfo.FileName = lpsShortcut
program .Start()
Catch
'If not go to the web site for a fresh install
Try
.Diagnostics.Process.Start("IExplore.exe", "http://url/program.application")
Catch ex As Exception
'Log or Email alert here...
End Try
End Try