如何用Windows Configuration Designer将PSADT及支持文件打包为单.ppkg
问题背景
需要用Windows Configuration Designer(WCD)实现Windows 11重置后的自动化部署:自动加入AD域,通过PowerShell App Deployment Toolkit(PSADT v4.0)静默安装Office 2016、JRE 8、卡巴斯基终端安全、CrowdStrike Falcon等应用。但WCD高级模式仅支持添加单个安装文件,无法直接导入完整PSADT文件夹(含脚本、XML及二进制文件),Runtime的文件/文件夹板块UI不支持批量选择文件夹,且不想用手动修改.ppkg(本质是ZIP)的非官方方法,也不依赖网络共享,要做离线独立的.ppkg。
规范解决方案
方案1:通过自定义XML批量导入PSADT文件+FirstLaunchCommand调用脚本
WCD支持导入自定义XML配置来批量添加文件复制规则,绕过UI的限制:
准备PSADT文件夹的XML配置片段
创建一个PSADT-Files.xml文件,按以下格式列出所有需要复制的PSADT文件(包括子文件夹内的文件):<Settings xmlns="http://schemas.microsoft.com/Provisioning/2013/01/DeviceMetadata"> <Customizations> <Runtime> <Files> <!-- 示例:复制主脚本到目标路径 --> <File Source="PSADT\Deploy-Application.ps1" Destination="C:\PSADT\Deploy-Application.ps1" /> <!-- 复制AppDeployToolkit核心文件 --> <File Source="PSADT\AppDeployToolkit\AppDeployToolkitMain.ps1" Destination="C:\PSADT\AppDeployToolkit\AppDeployToolkitMain.ps1" /> <File Source="PSADT\AppDeployToolkit\AppDeployToolkitHelper.ps1" Destination="C:\PSADT\AppDeployToolkit\AppDeployToolkitHelper.ps1" /> <!-- 继续添加所有PSADT相关文件(包括安装包、XML配置等) --> </Files> </Runtime> </Customizations> </Settings>注意:
Source是相对于WCD项目工作目录的路径,需将完整PSADT文件夹放在WCD项目的工作目录下。导入XML到WCD项目
在WCD高级模式中,点击顶部菜单栏的导入 -> 导入自定义XML,选择刚才创建的PSADT-Files.xml,WCD会自动加载所有文件复制规则。配置FirstLaunchCommand执行脚本
在WCD的Runtime -> FirstLaunchCommands中添加以下命令,确保部署完成后自动运行PSADT脚本:powershell.exe -ExecutionPolicy Bypass -File "C:\PSADT\Deploy-Application.ps1" -DeploymentType Install -Silent完成其他配置并生成.ppkg
配置好AD域加入(Domain Join板块)后,点击导出 -> Provisioning Package生成.ppkg,此时所有PSADT文件都会被嵌入到包内,部署时自动复制到C:\PSADT\并执行安装脚本。
方案2:将PSADT打包为静默自解压EXE
如果不想写大量XML,可以用压缩工具把PSADT文件夹打包成自解压EXE,再通过WCD部署:
打包自解压EXE
用WinRAR或7-Zip将完整PSADT文件夹打包为自解压EXE,设置静默释放到C:\PSADT\,无需用户交互(WinRAR可添加-s参数实现静默)。添加到WCD应用板块
在WCD的Applications中添加这个自解压EXE,设置安装参数为静默释放的参数(比如-s)。配置FirstLaunchCommand调用脚本
在FirstLaunchCommands中添加脚本调用命令,可加延时确保文件释放完成:powershell.exe -ExecutionPolicy Bypass -Command "Start-Sleep -Seconds 10; & 'C:\PSADT\Deploy-Application.ps1' -DeploymentType Install -Silent"
注意事项
- 确保PSADT脚本中的路径为绝对路径,或基于
C:\PSADT\的相对路径,避免找不到文件。 - 测试时在虚拟机中执行重置+部署,验证文件是否正确复制、域是否成功加入、应用是否静默安装完成。
- 可调整FirstLaunchCommand的执行顺序,确保域加入完成后再执行应用安装(比如在脚本中添加域状态判断)。
内容的提问来源于stack exchange,提问作者abdulrahman

