7

ユーザーにまったくプロンプトを表示せずにClickOnceアプリケーションをインストールする方法はありますか?私は、ユーザーがアプリケーションを初めて実行するときに取得する「実行/実行しない」について話しています。

ここにはいくつかの手がかりがあるようですが、実際の最初の「実行/実行しない」画面ではなく、「高度」(UAC)とセキュリティプロンプトをスキップすることに関するものだと思います。

過去にインストールしたアプリケーションをサイレントアップデートする方法についての情報しか見つかりませんが、初めてアプリケーションをサイレントインストールする方法については何もわかりません。

関連しているように見えるこの投稿も見つけましたが、同じユーザープロンプトについて話しているのかどうかはわかりません...

4

4 に答える 4

5

MikeBazs の回答に加えて、クリック ワンス アプリケーションのインストールを「非対話的」かつ「ほとんどサイレント」にする次の「回避策」を提供したいと思います (ユーザーはインストール中に進行状況ウィンドウを表示し、クリックしません。必須および/または可能)

考慮すべき「問題」がいくつかありますが、このガイドに従えば、必要な結果が得られるはずです。

1.)アプリケーションに署名する: Visual Studio 内では、独自の証明書を使用して簡単にアプリケーションに署名できます。大したことではありません。

2.)証明書の配布:ダイアログを回避するために、アプリケーションをインストールする必要がある場合は、任意のマシンの次のストアに証明書を配布する必要があります (そのために GPO を使用します) Trusted PublishersTrusted Root Certification Authorities

これで、ユーザーはワンクリックでアプリケーションをインストールできるようになりました。セキュリティに関する質問は不要です。しかし、ゼロ クリックが必要です。

3.) まだインストールされていない場合は、アプリケーションの setup.exe を呼び出す PowerShell スクリプトをサーバー上に作成します。

$appInfo = Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall | foreach-object {Get-ItemProperty $_.PsPath}
$displayName = $appInfo | ? { $_.displayname -eq "MyApplicationName" } | select displayName

if ($displayName -eq $null){
  # MyApplicationName not installed, install! 
  Start-Process "\\server\share\MyApplication\Application\setup.exe"
}

これで、ユーザーはそのスクリプトを実行でき、それ以上の確認を必要とせずにインストールを 1 回だけ取得できます。ただし、アプリケーションはインストール後に起動します。

4.)アプリケーションのソースコードを変更します。ダミー ファイルを使用して、アプリケーションの最初の実行を検出しました。それが最初の実行である場合(つまり、インストール直後)、もう一度シャットダウンします。

private void Form1_Load(object sender, EventArgs e)
    {
        //first run? That's a initial deployment, close application.
        if (!File.Exists("C:\\some\\static\\path\\notfirstrun.dat"))
        {
            File.WriteAllText("C:\\some\\static\\path\\notfirstrun.dat", "1");
            Application.Exit();
        }

これで、ユーザーはそのスクリプトを実行でき、それ以上の確認を必要とせずに一度だけインストールを取得でき、アプリケーションはセットアップ後に「自動起動」しません。

ただし、「クリック」も避けたいと思います。

Startup-Folder に powershell スクリプトをセットアップすると、ポップアップが表示されますが、これは醜いです。ログイン スクリプトとして設定すると、クリック ワンスに必要なユーザー コンテキストでは実行されません。

「この」問題の回避策として、スクリプト内にラップしてvbs、powershell スクリプトを呼び出すことができます。これはユーザー コンテキストで実行されるため、ユーザーには powershell-scripts を実行する権限が必要であることに注意してください。

Dim objShell
Set objShell=CreateObject("WScript.Shell")

strCMD="powershell.exe -sta -noProfile -NonInteractive -nologo -ExecutionPolicy Bypass -f \\server\share\scripts\install_App.ps1" 
objShell.Run strCMD,0,True

最後に、GPO を使用して、vbs スクリプトを任意のユーザーのスタートアップ フォルダーに展開します。

ユーザーに表示されるのは、「インストール」の進行状況だけです。

手短に:

  • コードに署名する
  • 証明書を配布する
  • PowerShell スクリプトを使用してインストールを開始する
  • 非表示のvbsスクリプト内にそのpowershellスクリプトをラップします
  • vbs スクリプトを各ユーザーのスタートアップ フォルダーに展開します。
于 2017-05-17T14:47:07.343 に答える
2

ユーザーにプロンプ​​トを表示せずに ClickOnce アプリケーションをインストールする方法はありません。ユーザーがダブルクリックできるようにして、ユーザーに確認せずにインストールするだけの場合は、ClickOnce を使用しないでください。率直に言って、私の経験では、エンタープライズ環境で SMS を使用してプッシュされたマルウェアとパッケージだけが、ユーザーにプロンプ​​トを表示せずにインストールされます。

于 2013-02-25T07:46:54.183 に答える