You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Ansible为Chocolatey实现Windows应用离线部署?

离线部署Notepad++到Windows客户端(Ansible+Chocolatey方案)

核心流程很清晰:先用Ansible把本地的Notepad++安装包推到Windows客户端,再通过Chocolatey(或直接静默执行安装程序)完成离线安装。下面分两种常用方案讲解,附直接可用的Playbook。

前期准备

  • 把要用来安装的Notepad++离线exe(比如npp.8.5.8.Installer.exe)放到Ansible服务器的files/目录下(这是Ansible默认读取本地文件的路径,也可自行指定)
  • 确认Windows客户端已安装Chocolatey(你提到客户端运行Chocolatey,这里默认已完成配置)

方案一:直接推送exe静默安装(快速实现)

这种方式无需额外制作Chocolatey包,直接利用安装程序的静默参数完成安装,还可通过Chocolatey验证安装状态(可选)

---
- name: 离线安装Notepad++到Windows客户端
  hosts: windows_clients  # 替换为你的Windows客户端组名
  gather_facts: yes
  tasks:
    - name: 推送Notepad++安装包到客户端临时目录
      win_copy:
        src: files/npp.8.5.8.Installer.exe
        dest: C:\temp\npp_installer.exe
        force: yes  # 覆盖已存在的旧安装包

    - name: 静默安装Notepad++
      win_shell: C:\temp\npp_installer.exe /S
      args:
        executable: cmd
      register: install_output
      changed_when: install_output.rc == 0  # 通过返回码判断安装是否成功

    - name: 用Chocolatey确认安装状态(可选)
      win_chocolatey:
        name: notepadplusplus
        state: present
      ignore_errors: yes  # 离线环境下未配置Chocolatey本地源会报错,故忽略

方案二:自定义Chocolatey包安装(规范管理)

如果需要用Chocolatey统一管理软件的安装、升级、卸载,可先制作自定义离线Chocolatey包,再推送到客户端安装。

第一步:在Ansible服务器创建自定义Chocolatey包

  1. 搭建目录结构:
notepadplusplus-local/
├── tools/
│   ├── chocolateyinstall.ps1
│   └── npp.8.5.8.Installer.exe  # 将你的安装exe放入此目录
└── notepadplusplus-local.nuspec
  1. 编写chocolateyinstall.ps1脚本:
$installerPath = Join-Path $toolsDir "npp.8.5.8.Installer.exe"
$silentArgs = "/S"

Install-ChocolateyInstallPackage `
  -PackageName 'notepadplusplus-local' `
  -FileType 'exe' `
  -SilentArgs "$silentArgs" `
  -File "$installerPath"
  1. 编写notepadplusplus-local.nuspec配置文件:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">
  <metadata>
    <id>notepadplusplus-local</id>
    <version>8.5.8</version>
    <title>Notepad++ (Offline)</title>
    <authors>Notepad++ Team</authors>
    <owners>Your Team</owners>
    <summary>Offline install of Notepad++</summary>
    <description>Offline deployment of Notepad++ via custom Chocolatey package</description>
    <tags>notepad++ text-editor offline</tags>
  </metadata>
  <files>
    <file src="tools\*" target="tools" />
  </files>
</package>
  1. 打包成nupkg:在该目录下运行choco pack(需Ansible服务器已安装Chocolatey),生成notepadplusplus-local.8.5.8.nupkg

第二步:用Ansible推送并安装自定义包

---
- name: 用自定义Chocolatey包离线安装Notepad++
  hosts: windows_clients
  gather_facts: yes
  tasks:
    - name: 创建客户端临时目录(若不存在)
      win_file:
        path: C:\temp
        state: directory

    - name: 推送自定义Chocolatey包到客户端
      win_copy:
        src: notepadplusplus-local.8.5.8.nupkg
        dest: C:\temp\notepadplusplus-local.8.5.8.nupkg
        force: yes

    - name: 安装本地Chocolatey包
      win_chocolatey:
        name: notepadplusplus-local
        state: present
        source: C:\temp\  # 指定本地nupkg所在目录作为Chocolatey源

关键注意事项

  • win_copy是Ansible向Windows传输文件的核心模块,force: yes确保新安装包覆盖旧文件
  • 不同软件的静默安装参数不同,Notepad++为/S,其他软件可能是/quiet、/qn,需提前确认
  • 使用自定义Chocolatey包后,可直接通过win_chocolatey模块完成卸载、升级操作,更适合企业级管理
  • 若客户端C:\temp目录不存在,必须先通过win_file模块创建,否则推送文件会失败

内容的提问来源于stack exchange,提问作者arrowSpace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:10:29