使用Microsoft Visual Studio Installer Projects安装FTDI驱动的自定义操作问题
你推测的故障原因完全正确,FTDI官方驱动安装包执行完成后默认返回非0退出码,而Visual Studio Installer Projects的自定义操作会将非0返回值判定为执行失败,因此抛出安装包错误提示。以下是两种可直接落地的解决方案:
方案1:使用批处理脚本封装(无需编写C#,操作更简单)
- 新建一个文本文件,重命名为
install_ftdi.bat,写入以下内容:
@echo off :: 运行FTDI驱动安装包,/S参数代表静默安装,不需要弹出安装界面可保留,需要手动交互就删掉该参数 start /wait CDM212364_Setup.exe /S :: 强制返回0退出码,避免安装器判定失败 exit 0
- 将
install_ftdi.bat和CDM212364_Setup.exe一同添加到安装项目的「应用程序文件夹」中 - 右键安装项目 → 视图 → 自定义操作 → 右键「Commit」阶段 → 选择「添加自定义操作」 → 选中刚才加入的
install_ftdi.bat - 选中刚添加的自定义操作项,在属性面板中将
InstallerClass属性改为False,完成配置即可
方案2:使用C#控制台程序封装
如果更偏好使用exe封装,可以用极简的C#代码实现:
- 新建C#控制台项目,替换默认代码为以下内容:
using System; using System.Diagnostics; namespace FtdiInstallWrapper { class Program { static int Main(string[] args) { Process ftdiInstall = new Process(); ftdiInstall.StartInfo.FileName = "CDM212364_Setup.exe"; // 不需要静默安装就删掉下面这行StartInfo.Arguments的配置 ftdiInstall.StartInfo.Arguments = "/S"; ftdiInstall.Start(); ftdiInstall.WaitForExit(); // 无论驱动安装返回值是什么,都返回0告知安装器执行成功 return 0; } } }
- 编译项目得到封装exe,将该exe和FTDI驱动安装包一同添加到安装项目的「应用程序文件夹」
- 同方案1的后续步骤,将封装exe添加到Commit阶段的自定义操作,修改
InstallerClass属性为False即可
注意事项
- 如果你的应用需要支持32位/64位系统,注意对应匹配FTDI驱动包版本
- 若需要校验驱动安装结果,可以在封装逻辑中增加退出码判断,仅当驱动返回值为预期的1/0时返回0,其他异常值返回非0即可捕获真实安装故障
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

