VBScriptを使用してClickOnceデプロイ済みWindowsアプリケーションを起動する
質問
次の例でMicrosoft Wordを起動するのと同様に、VBScriptから起動するClickOnceデプロイ済みアプリケーションがあります:
Dim word
Set word = CreateObject("Word.Application")
word.Visible = True
問題は、アプリケーションを起動するために CreateObject
関数に渡すパラメーターがわからないことです。 PCにインストールされているアプリケーションのマスターリスト/それらを起動するために呼び出すショートカットはどこにありますか?
解決
ClickOnceは、その方法ではインストールされません。通常、COMフック(CreateObject用)はなく、ユーザーのプロファイル(そのマシンのプロファイルではない)の分離された部分にインストールされます。また、ClickOnceを介して(異なる場所から)同じアプリの複数のコピー/バージョンを一度に取得できることも忘れないでください。
1つのオプション(3.5 / VS2008)では、新しいファイルの関連付けなどを使用できます。アプリを" .foo"に関連付けます。ファイル、空の" .foo"を作成しますファイルして起動します。それはうまくいくかもしれません。 VS2008のPublish => Optionsダイアログを見てください。
それ以外の場合-基本的に、このタイプの使用が必要な場合は、msi(つまり、ClickOnceではなく通常のインストーラー)を使用してアプリをCOMライブラリ(dll)として登録する必要があると思います。 .NETは優れたCOMサーバー(exe)を作成しないため、Wordと直接比較しないことに注意してください。 .NET COMサーバーが必要な場合は、「サービスコンポーネント」最善の策ですが、これらはUIで大きくなる傾向はありません。
情報については、隔離された領域は"%userprofile%\ Local Settings \ Apps \ 2.0"の周りのどこかにありますが、これは単に興味があるので見ることができます。そこから実行しないでください。
他のヒント
情報をありがとう。これにより、vbscriptの代わりに.Net実行可能ファイルを使用してアプリケーションを起動できることに気付きました。
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