MikeBazs の回答に加えて、クリック ワンス アプリケーションのインストールを「非対話的」かつ「ほとんどサイレント」にする次の「回避策」を提供したいと思います (ユーザーはインストール中に進行状況ウィンドウを表示し、クリックしません。必須および/または可能)
考慮すべき「問題」がいくつかありますが、このガイドに従えば、必要な結果が得られるはずです。
1.)アプリケーションに署名する: Visual Studio 内では、独自の証明書を使用して簡単にアプリケーションに署名できます。大したことではありません。
2.)証明書の配布:ダイアログを回避するために、アプリケーションをインストールする必要がある場合は、任意のマシンの次のストアに証明書を配布する必要があります (そのために GPO を使用します) Trusted Publishers
。Trusted 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 スクリプトを各ユーザーのスタートアップ フォルダーに展開します。