His Masters' Voices Wiki

よろずのことの書き残し

ユーザ用ツール

サイト用ツール


pc:winget

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
pc:winget [2023/04/30 18:45] – [使い方] nipa28pc:winget [2023/05/04 10:26] (現在) – [Wingetの使い方] nipa28
行 2: 行 2:
 ======================= =======================
  
-Winget導入+概要 
 +---- 
 +Windowsでアプリをインストールする方法は、ソフトウェアの配布サイト(アプリの公式や窓の杜などのサイト)からインストーラーをダウンロードしてGUIでインストールするのが一般的である。(ほかには、Microsoftストアからインストールする方法もあるにはあるが……) 
 +たくさんのアプリをインストールする場合は、その都度インストール作業をポチポチ行う必要があり、これは非常に面倒。 
 + 
 +一方、LinuxではコマンドラインからCUIでインストール(yum, dfn, apt など)が一般的。 
 +これだと、スクリプトを書いておくとコマンド一発で所望のアプリを一括インストール、というようなことが簡単に実現できる。 
 + 
 +実は、Windowsでも コマンドラインからCUIでインストールすることができる。 
 + 
 +この用には、以前よりChocolaty(chocoコマンド)が存在していたが、有志のプロジェクトということもあり、個人所有ならともかく、企業で業務利用するPCで積極的に使うのはちょっと躊躇いがあった。 
 + 
 +最近では、Microsoft自身がCUIによるアプリ管理方法を整備しており、Windows10 Windows11では、マイクロソフト謹製の winget というコマンドが使えるようになっている。 
 +Microsoftが公式に提供している機能ということもあって、業務利用でも安心して(?)使用することができる。 
 + 
 + 
 +そんな、winget コマンドでアプリを管理する方法について、よく使うところだけ、簡単に記す。 
 + 
 + 
 + 
 +Winget導入する
 ---------- ----------
  
行 8: 行 28:
   * PowerShellで次のコマンドを実行する   * PowerShellで次のコマンドを実行する
     `Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe`     `Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe`
-使い方+Wingetの使い方 
 +---------- 
 + 
 +インストールされているアプリを一覧表示する 
 +``` 
 +winget list 
 +``` 
 + 
 +アプリを探す 
 +インストールしたいアプリの正確な名前(ID、モニカー)を確認する。 
 +``` 
 +winget search <キーワード> 
 +``` 
 + 
 + 
 + 
 +アプリをインストールする 
 + 
 +``` 
 +winget install <appname> 
 +``` 
 + 
 +アップグレードできるアプリを表示 
 +``` 
 +winget upgrade 
 +``` 
 + 
 +アプリをアップグレードする 
 +``` 
 +winget upgrade <appname> 
 +``` 
 + 
 + 
 + 
 +アプリを削除する 
 + 
 +``` 
 +winget uninstall notepad++ 
 +``` 
 + 
 + 
 +{{:pc:pasted:20230502-165048.png}} 
 + 
 + 
 +インストール先のこと 
 +---------- 
 + 
 +Wingetに限ったことではないが、インストーラーを使ったWindowsアプリのインストール先には、基本的に次のパターンがある。 
 + 
 +  * システムインストール ※管理者権限が要る 
 +    すべてのユーザー(ALL USERS)  ''C:\Program Files\'', ''C:\Program Files (x86)\''など 
 +  * ユーザーインストール 
 +    現在のユーザー(CURRENT USER) ''C:\Users\<USERNAME>\AppData\Local\Programs\''など 
 + 
 +個人所有など、自分専用として専有できるパソコンならば、別にどちらを選ぼうが構わない。 
 +会社や家族共用しているなど、複数ユーザーが共有するパソコンでは、ALL USERSでインストールしたいケースが多いに違いない。 
 + 
 +<note>ありがちな失敗例(自分の経験) 
 + 
 +管理者権限のあるadminユーザーでアプリをインストールしたが、本来そのアプリを使いたい一般ユーザーでサインインすると、アプリは使えない状態のままだった。 
 +インストーラーのデフォルトがユーザーインストールだったため、adminだけが使える状態でインストールされたことが原因。</note> 
 + 
 +winget installに --scopeオプションを付けると、インストール範囲をuserまたはmachineに設定できる。userで基本ユーザーインストール、machineで基本システムインストールになるようだ。(デフォルトはuser) 
 +いちいち --scope machine を付けるのが面倒なら winget settings で次のようにしておくと毎度オプション指定する手間が省ける。 
 + 
 +settings.jsonに追記 
 +``` 
 + "installBehavior":
 + "preferences":
 + "scope": "machine" 
 +
 + }, 
 +``` 
 + 
 + 
 + 
 + 
 + 
 + 
 +Help
 ------ ------
  
行 54: 行 153:
  
  
 +++++ winget install help |
 +```
 +PS C:\Users\hmv13> winget install --help
 +v1.4.10173 の Windows パッケージ マネージャー
 +Copyright (c) Microsoft Corporation. All rights reserved.
  
-各種アプリのインストール先 +Installs the selected package, either found by searching a configured source or directly from a manifest. By default, the query must case-insensitively match the id, name, or moniker of the package. Other fields can be used by passing their appropriate option. By default, install command will check package installed status and try to perform an upgrade if applicable. Override with --force to perform a direct install.
--------------+
  
-各種アリのデフォルトのイストール先 +使用法: winget install [[-q] <query>] [<オション>]
-System: C:\Program Files\ +
-User: C:\Users\<USERNAME>\AppData\Local\Programs\+
  
 +次のコマンド エイリアスを使用できます:
 +  add
  
-^ アプリ     ^ オプションなし  ^ オプション(Silent/System)         ^ 備考                                                                                       ^ +次の引数を使用できます。 
-| Notepad++  | System          | /S                                |                                                                                            | +  -q,--query                           パッケージの検索使用されクエリ
-| WinMerge   | User            | /SILENT /ALLUSERS                 | v2.16.28  wingetでオプション指定してもUser権限\\ (単体インストーラーだとSystem権限) +
-| WinSCP     | User            | /VERYSILENT /NORESTART /ALLUSERS  |                                                                                            |+
  
 +次のオプションを使用できます。
 +  -m,--manifest                        パッケージのマニフェストのパス
 +  --id                                 ID で結果をフィルター処理
 +  --name                               名前で結果をフィルター処理
 +  --moniker                            モニカーで結果をフィルター処理
 +  -v,--version                         指定されたバージョンを使用します。既定値は最新バージョンです
 +  -s,--source                          指定されたリソースを使用してパッケージを検索
 +  --scope                              インストールの範囲 (ユーザーまたはコンピューター) の選択
 +  -a,--architecture                    アーキテクチャを選択してインストール
 +  -e,--exact                           完全一致を使用してパッケージを検索
 +  -i,--interactive                     対話式のインストールが要求されます。ユーザーの入力が必要になる場合があります
 +  -h,--silent                          サイレント インストールを要求
 +  --locale                             使用するロケール (BCP47 形式)
 +  -o,--log                             ログの場所 (サポートされている場合)
 +  --override                           インストーラーに渡される引数を上書き
 +  -l,--location                        インストール先 (サポートされている場合)
 +  --ignore-security-hash               インストーラーのハッシュのチェックが失敗しても無視します
 +  --ignore-local-archive-malware-scan  ローカル マニフェストからのアーカイブの種類のパッケージのインストールの一環として実行さ れたマルウェア スキャンを無視します
 +  --dependency-source                  指定されたリソースを使用してパッケージの依存関係を検索
 +  --accept-package-agreements          パッケージのすべての使用許諾契約に同意する
 +  --no-upgrade                         インストール済みバージョンが既に存在する場合はアップグレードをスキップします
 +  --header                             オプションの Windows-Package-Manager REST ソース HTTP ヘッダー
 +  --accept-source-agreements           ソース操作中にすべてのソース契約に同意する
 +  -r,--rename                          実行可能ファイルの名前を変更する値 (ポータブル)
 +  --force                              コマンドを直接実行し、セキュリティ関連でない問題の場合に続行します
 +  -?,--help                            選択したコマンドに関するヘルプを表示
 +  --wait                               終了する前に任意のキーを押すプロンプトをユーザーに表示します
 +  --verbose,--verbose-logs             WinGet の詳細ログを有効にする
 +  --disable-interactivity              対話型プロンプトを無効にします
  
-スクリ +その他のヘルについては、次を参照してください: https://aka.ms/winget-command-install 
----------+PS C:\Users\hmv13> 
 +``` 
 +++++ 
 +System権限か、User権限か 
 +------------- 
 + 
 +アプリのインストールのされ方として、System権限:すべてのユーザー(管理者権限必要)と User権限:現在のユーザー がある。 
 +System権限: C:\Program Files\<appName> や C:\Program Files(x86)\<appName>  
 +User権限: C:\Users\<USERNAME>\AppData\Local\Programs\<appName> 
 + 
 +特にsettingを変更せずに、winget install でインストールすると、どちらになるかは、アプリによってまちまちのようだ。
  
-※すべのユーザーにインストール+こうしおくと、System権限でインストールされみたい。
  
 ``` ```
-winget install winscp --silent --override "/SILENT /ALLUSERS"+winget install winmerge --scope machine
  
 ``` ```
 +
 +
 +++++ 上手くない方法 |
 +
 +アプリのインストーラにオプションを渡して、System権限(/ALLUSERS etc)、User権限(/CURRENTUSER etc)を指定して、インストール先を制御することもできるが、アプリによっては反映されないことあった。
  
 ``` ```
-winget install winmerge --scope machine+winget install winscp --silent --override "/SILENT /ALLUSERS"
  
 ``` ```
 +
 +
 +
 +Notepad++ 
 + System
 + /S
 +
 +WinMerge
 + User
 + /SILENT /ALLUSERS
 + v2.16.28 wingetでオプション指定してもUser権限になる(単体インストーラーだとSystem権限)
 +WinSCP
 + User
 + /VERYSILENT /NORESTART /ALLUSERS
 +
 +++++
 +スクリプト
 +---------
 +
 +
 +
 +<file batch installApps.cmd>
 +powershell -ExecutionPolicy RemoteSigned -File .\installApps.ps1
 +</file>
 +
 +<file powershell installApps.ps1>
 +$list = "7zip.7zip", `
 +        "winscp", `
 +        "Notepad++.Notepad++", `
 +        "Microsoft.WindowsTerminal", `
 +        "VideoLAN.VLC"
 +
 +foreach ($item in $list) {
 + echo "[$item]"
 + winget install $item --silent --scope machine
 +        if ($?) { echo "=>成功" } else { echo "=>失敗" }
 +}
 +</file>
 +
 +文字化けを避けるには、エンコードを「UTF-8-BOM」にする。
pc/winget.1682847901.txt.gz · 最終更新: 2023/04/30 18:45 by nipa28