3

ダウンロード マネージャー アプリケーションの構築を計画しており、ユーザーがサイトのボタンをクリックしたときにアプリケーションを起動できるようにしたいと考えています。アプリケーションは、明らかに、クライアント マシンに既にインストールされている必要があります。

これが Silverlight を使用して記述される必要がある理由はいくつかありますが、それらは質問とはあまり関係がありません。人々が私が別のテクノロジーを使用することを示唆しないように、私はそれについて言及するだけです.

4

4 に答える 4

1

他の 2 つの投稿 [ 1 ] と [ 2 ]を少しマッシュアップします。

もちろん、これは Mac ではなく Windows でのみ機能します。@michael-s-scherotterスタイルのソリューションにフォールバックする必要があります。

private void Button_Click(object sender, RoutedEventArgs e)
{
    if (Application.Current.HasElevatedPermissions && System.Windows.Interop.ComAutomationFactory.IsAvailable)
    {

        string run = "\""%ProgramFiles%\\Microsoft Silverlight\\sllauncher.exe"\" /emulate:"Silverface.xap" /origin:\"http://www.silverlight.net/content/samples/apps/facebookclient/ClientBin/Silverface.xap\" /overwrite";
        dynamic cmd = ComAutomationFactory.CreateObject("WScript.Shell");
        cmd.Run(run, 1, true);

    }
}
于 2010-08-13T04:05:11.100 に答える
0

はい。以下に例を示します: http://www.silverlight.net/content/samples/apps/facebookclient/sfcquickinstall.aspx

于 2010-06-02T15:14:29.943 に答える
0

ユーザーがクリックするたびにアプリをインストールすることに同意する場合は可能です。

また、OOB 設定で昇格された信頼を要求するようにアプリを設定する必要があります。

起動時にアプリをアンインストールするだけです (たとえば、メイン ウィンドウ コンストラクターで)。

if (Application.Current.HasElevatedPermissions && Application.Current.InstallState == InstallState.Installed)
{
    string launcherPath = string.Empty;
    using (dynamic shell = AutomationFactory.CreateObject("Shell.Application"))
    {
        string launcher64 = @"C:\Program Files (x86)\Microsoft Silverlight";
        string launcher32 = @"C:\Program Files\Microsoft Silverlight";

        dynamic folder64 = shell.NameSpace(launcher64);
        if (folder64 != null)
        {
            launcherPath = launcher64;
        }
        else
        {
            dynamic folder32 = shell.NameSpace(launcher32);
            if (folder32 != null)
            {
                launcherPath = launcher32;
            }
        }
    }

    using (dynamic shell = AutomationFactory.CreateObject("WScript.Shell"))
    {
        var origin = Application.Current.Host.Source.OriginalString;
        var launchCmd = string.Format(@"""{0}\sllauncher.exe"" /uninstall /origin:""{1}""", launcherPath, origin);
        shell.Run(launchCmd);
    }
}

(アンインストールのコードはこの投稿から取得しました: http://www.wintellect.com/blogs/sloscialo/programmatically-uninstalling-silverlight-out-of-browser-application )

于 2014-11-18T13:55:17.317 に答える
0

インストールした Silverlight OOB を Silverlight アプリからブラウザー内で起動するトリックを見つけました。両方のアプリケーションを署名し、信頼を高める必要があります。

  1. ユーザーが Silverlight OOB アプリを初めてインストールするときに、デスクトップ上の OOB アプリのショートカット ファイルからパスと引数の値を取得します。(参照: Silverlight OOB で Shell32.dll を使用する方法) パスと引数の値がわかっている場合は、Com オブジェクトを使用して OOB アプリを起動できます。
  2. 取得したパスと引数の値を、ブラウザー内の Silverlight アプリに送信します。(参照: http://msdn.microsoft.com/en-us/library/dd833063(v=vs.95).aspx )
  3. パスと引数の値を Cookie に保存します。
  4. これで、Silverlight アプリのブラウザー内で、Cookie のパスと引数の値を使用して Silverlight OOB を起動できるようになりました。

using (dynamic shell = AutomationFactory.CreateObject("WScript.Shell"))
{
    shell.Run(launchPath);
}

このトリックがお役に立てば幸いです:)

于 2013-01-29T17:03:46.480 に答える