我該如何告訴 Chocolatey 程式已自行更新?

我該如何告訴 Chocolatey 程式已自行更新?

我用 Choco 安裝了一個程式 (Paint.Net)。當時的版本是 3.13,但 Paint.Net 自行更新到了 3.15。

但是,當我運行 時choco outdated,它仍然認為已安裝 3.13 並想要(重新)安裝 3.15。

有沒有辦法將已安裝軟體包的 choco 本地資料庫中的內容同步到實際的當前版本?

這是 choco 的免費版本。

答案1

Chocolatey 中存在此選項,但僅限付費版本。它被稱為 同步命令。您可以在上面的連結中找到有關使用它的更多資訊。可以在以下位置找到描述該命令的視頻 Youtube

Chocolatey 也可以自動執行此同步,如中所述
與程式和功能同步(僅限許可版本)


據說,一個可以同步的免費巧克力程式管理器是 部署,你可以嘗試一下。

在緊要關頭,如果您不想讓 Chocolatey 更新某些軟體包,忽略它們,您可以使用 choco pin 指令

要讓 Chocolatey 知道已安裝的應用程式而不執行安裝腳本,請使用參數-n, --skippowershell, --skip-powershell, --skipscripts, --skip-scripts, --skip-automation-scripts (這些都是相同的開關)。看 如何在不運行腳本的情況下安裝或升級包


您也可以將 Chocolatey 連接到與 Linux apt-get 相對應的 Microsoft PowerShell: 一得,現在更名為套件管理。 Package Manager是微軟的名字,而底層的開源專案仍然命名為OneGet。然後,您將能夠使用 PowerShell 作為 Windows 和 Chocolatey 的獨特介面。

您可以在 Microsoft 部落格中閱讀有關 OneGet 的信息
PowerShell 新增功能:透過 Windows PowerShell 5.0 在線上使用 OneGet 入門

OneGet 是一個套件管理器的管理器,並且它支援 Chocolatey 作為包提供者。您可以使用以下命令在 PowerShell 中安裝它 Find-PackageProvider 指令

在此輸入影像描述

然後您可以使用 Install-PackageProvider 指令 設定巧克力介面(儘管注意,因為它還只是一個原型,所以你必須摸索一下):

Install-PackageProvider chocolatey -Scope CurrentUser

以下是從巧克力庫安裝 Notepad++ 的 PowerShell 範例:

在此輸入影像描述

您可以在以下參考文獻中找到更多資訊:

答案2

該答案基於以下命令的輸出:

choco outdated

choco 過時指令的輸出

正如另一個答案中提到的,Chocolatey 的開源版本中沒有自動方法來根據以另一種方式更新的應用程式版本來更新 Chocolatey 套件版本。在 Chocolatey 的許可版本中,這特徵可用。

如果您想使用 Chocolatey 進行應用程式的初始安裝,即

choco install paint.net

然後讓應用程式自行更新,那麼最好的建議是使用別針 命令。這可以透過以下命令完成:

choco pin add -n="paint.net"

這意味著當您運行該choco upgrade all命令時,假設您正在使用它,即使找到新版本,也將不再考慮升級該軟體包。此外,該命令的輸出choco outdated將變更為以下內容:

pin 指令後 choco 的輸出已過時

如果您確實想從choco outdated報告中刪除該條目,但您也想依賴應用程式的自我更新能力,那麼您應該能夠執行以下命令:

choco upgrade paint.net --skip-automation-scripts

這告訴 Chocolatey 將軟體包升級到目前可用的版本,但它也會阻止 ChocolateyInstall.ps1(和其他檔案)檔案的執行,這意味著應用程式安裝程式將永遠不會執行。如圖所示:

跳過自動化腳本時 choco Upgrade 指令的輸出

運行上述命令後,命令的輸出choco outdated變為:

升級後 choco 的輸出已過時

相關內容