【发布时间】:2010-11-05 11:00:06
【问题描述】:
安装 shield 首映 2009:基本 MSI 从命令行键入 setup.exe /s /v/qn 静默安装。但是如果它在默认情况下选择“修改”之前安装过一次并且不会替换文件。但我需要再次复制文件。默认情况下如何在第二次静默安装时执行“修复”?
【问题讨论】:
标签: windows-installer default installshield mode
安装 shield 首映 2009:基本 MSI 从命令行键入 setup.exe /s /v/qn 静默安装。但是如果它在默认情况下选择“修改”之前安装过一次并且不会替换文件。但我需要再次复制文件。默认情况下如何在第二次静默安装时执行“修复”?
【问题讨论】:
标签: windows-installer default installshield mode
Setup.exe /s /v"/f {11111111-1111-1111-1111-111111111111}" /v"/qn"
其中“{11111111-1111-1111-1111-111111111111}”是您要修复的安装的 ProductCode GUID。
【讨论】:
首先:看起来我们需要更多关于您想要实现的目标的详细信息。您是要重新安装产品以修复任何损坏的组件,还是要安装产品的新版本(可能与以前的设置并排安装)。
William 的回答看起来是正确的,但引号可能存在一些问题。您描述的行为表明 Windows Installer 无法解析命令行。我尚未对此进行测试,但请尝试:
Setup.exe /s /v"/f {11111111-1111-1111-1111-111111111111} /qn"
一些背景信息:setup.exe 是一个Installshield-provider 安装启动器。命令行中 /V 之后的任何内容都“按原样”传递到主 Windows Installer exe 文件 msiexec.exe (msiexec.exe command line parameter reference)。
请注意,Windows Installer 不同于任何以前的部署解决方案。安装 MSI 后,Windows Installer 会记录安装的内部 GUID。因此无法安装同一产品的多个实例(除非您为此设计了 MSI)。
一些msiexec.exe示例命令行:
安装:
卸载:
修复:
Admin Image(从 MSI 中提取源文件):
从上述任何命令行中删除 /qn 以交互运行而不是静默运行。
【讨论】:
InstallShield@2009
添加以下代码:
函数 OnMaintUIBefore() ... ... 开始 // 如果是静音模式,则设置为修复模式并继续 如果(模式 = 静音模式)那么 nType = 修复; 转到 Dlg_SdFeatureTree; endif;
【讨论】:
我刚刚找到了解决方案: 对于基本 MSI,打开属性管理器视图并将属性 _IsMaintenance 设置为“重新安装”。
【讨论】: