关于使用Chocolatey、setup.exe及shimgen创建静默安装程序的技术问询
让我一步步帮你理清这两个问题:
1. 能否仅通过程序的setup.exe和shimgen,借助Chocolatey创建静默安装程序?
理论上可以实现,但有几个关键前提和必要步骤,不是直接丢两个文件就行:
- 首先,你的
setup.exe必须支持静默安装参数(比如/silent、/quiet、/verysilent这类,不同程序的参数可能不一样,需要查官方文档或运行setup.exe /?查看可用参数)。Chocolatey本身不处理安装逻辑,只是帮你调用安装程序的静默模式。 - 其次,你需要一个
chocolateyinstall.ps1脚本放在tools文件夹里——这是Chocolatey的核心安装脚本,用来告诉Chocolatey怎么调用你的setup.exe进行静默安装。shimgen是Chocolatey自动用来生成快捷方式(shim)的工具,不需要你手动操作它,只要程序安装完成,Chocolatey会自动为程序主exe生成对应的shim。
简单总结:你需要setup.exe + 写好安装逻辑的chocolateyinstall.ps1,Chocolatey会自动完成调用静默安装、生成shim的流程。
2. 仅将setup.exe放入tools文件夹并生成shim的操作是否正确?程序会安装到哪里?
你的操作其实没完成完整的安装流程,只生成shim是没有意义的:Chocolatey只是检测到tools文件夹里有exe文件,自动生成了指向这个setup.exe的shim,但你的程序根本没被安装——运行这个shim只会再次启动安装程序,而不是打开ARM RVDS。
正确的操作步骤应该是这样:
- 在
tools文件夹里,除了setup.exe,还要创建chocolateyinstall.ps1脚本,示例内容(根据ARM RVDS 4.1的实际静默参数调整):# 获取setup.exe的路径 $installerPath = Join-Path $PSScriptRoot 'setup.exe' # 定义静默安装参数,替换成RVDS 4.1实际支持的参数 $installArgs = @( '/silent' '/installpath="C:\Program Files\ARM\RVDS 4.1"' # 可选,指定安装路径,不写则用程序默认路径 ) # 启动静默安装并等待完成 Start-Process -FilePath $installerPath -ArgumentList $installArgs -Wait -NoNewWindow - 执行
choco pack生成nupkg包。 - 测试安装:运行
choco install YourPackageName -s .(本地源安装),这时候Chocolatey会执行chocolateyinstall.ps1里的逻辑,调用setup.exe完成静默安装。
关于安装路径:
- 如果不指定路径参数,程序会安装到它自身的默认路径(通常是
C:\Program Files或C:\Program Files (x86)下的ARM RVDS专属文件夹)。 - 你可以通过setup.exe的专属参数手动指定安装路径,就像上面脚本里写的那样。
内容的提问来源于stack exchange,提问作者DeZLearnsPCs
相关产品推荐
相关产品推荐

