InstallShield 2009基本MSI静默安装:默认情况下如何设置“修复”

时间:2023-01-16 22:38:59

Install shield premiere 2009: Basic MSI from command line typing setup.exe /s /v/qn installs silently. But if its installed once before it chooses "Modify" by default and doesn't go for replacing files. But i need to copy again the files. How to perform "Repair" on second silent install by default?

安装shield premiere 2009:从命令行输入setup.exe / s / v / qn的基本MSI静默安装。但如果它安装一次,它默认选择“修改”,而不是替换文件。但我需要再次复制文件。如何在默认情况下在第二次静默安装时执行“修复”?

4 个解决方案

#1


2  

First of all: it looks like we need some more details as to what you are trying to achieve. do you want to reinstall the product to fix any broken components, or do you want to install a new version of the product (potentially side-by-side with the previous setup).

首先:看起来我们需要更多关于你想要实现的细节。是否要重新安装产品以修复任何损坏的组件,或者是否要安装新版本的产品(可能与先前的设置并排)。

William's answer looks correct, but there may be some issues with the quotes. The behavior you describes indicates that Windows Installer wasn't able to parse the command line. I haven't tested this but try:

威廉的回答看起来是正确的,但引号可能存在​​一些问题。您描述的行为表明Windows Installer无法解析命令行。我没有测试过,但尝试:

Setup.exe /s /v"/f {11111111-1111-1111-1111-111111111111} /qn"

Setup.exe / s / v“/ f {11111111-1111-1111-1111-111111111111} / qn”

Some background info: setup.exe is an Installshield-provider setup launcher. Anything after /V in the command line is passed "as is" to the main Windows Installer exe file msiexec.exe (msiexec.exe command line parameter reference).

一些背景信息:setup.exe是一个Installshield-provider安装启动器。命令行中/ V之后的任何内容“按原样”传递到主Windows Installer exe文件msiexec.exe(msiexec.exe命令行参数引用)。

Please note that Windows Installer is unlike any prior deployment solution. Once you have installed an MSI, Windows Installer keeps a record of the installation's internal GUIDs. It is hence not possible to install multiple instances of the same product (unless you design the MSI for this).

请注意,Windows Installer与以前的任何部署解决方案都不同。安装MSI后,Windows Installer会记录安装的内部GUID。因此,无法安装同一产品的多个实例(除非您为此设计MSI)。

Some msiexec.exe sample command lines:

一些msiexec.exe示例命令行:

Install:

安装:

  • msiexec.exe /i MySetup.msi /q
  • msiexec.exe / i MySetup.msi / q

Uninstall:

卸载:

  • msiexec.exe /x MySetup.msi /qn
  • msiexec.exe / x MySetup.msi / qn
  • msiexec.exe /x {11111111-1111-1111-1111-111111111111} /qn
  • msiexec.exe / x {11111111-1111-1111-1111-111111111111} / qn

Repair:

修理:

  • msiexec.exe /f MySetup.msi /qn
  • msiexec.exe / f MySetup.msi / qn
  • msiexec.exe /f {11111111-1111-1111-1111-111111111111} /qn
  • msiexec.exe / f {11111111-1111-1111-1111-111111111111} / qn

Admin Image (extract source files from MSI):

管理员映像(从MSI中提取源文件):

  • msiexec.exe /a MySetup.msi TARGETDIR="C:\ExtractSourcesHere"
  • msiexec.exe / a MySetup.msi TARGETDIR =“C:\ ExtractSourcesHere”

Remove /qn from any of the above command-lines to run interactively instead of silently.

从上述任何命令行中删除/ qn以交互方式而不是静默方式运行。

#2


1  

InstallShield@2009

的InstallShield @ 2009

Add follow code:

添加以下代码:

function OnMaintUIBefore() ... ... begin // if is silent mode then set as Repair mode and proceed if (MODE = SILENTMODE) then nType = REPAIR; goto Dlg_SdFeatureTree; endif;

function OnMaintUIBefore()...... ...开始//如果是静音模式然后设置为修复模式并继续if(MODE = SILENTMODE)然后nType = REPAIR;转到Dlg_SdFeatureTree;万一;

#3


1  

I just found the solution: For Basic MSI, open the Property Manager view and set the property _IsMaintenance to "Reinstall".

我刚刚找到了解决方案:对于Basic MSI,打开Property Manager视图并将属性_IsMaintenance设置为“Reinstall”。

#4


0  

Setup.exe /s /v"/f {11111111-1111-1111-1111-111111111111}" /v"/qn"

where "{11111111-1111-1111-1111-111111111111}" is the ProductCode GUID of the installation you want to repair.

其中“{11111111-1111-1111-1111-111111111111}”是您要修复的安装的ProductCode GUID。

#1


2  

First of all: it looks like we need some more details as to what you are trying to achieve. do you want to reinstall the product to fix any broken components, or do you want to install a new version of the product (potentially side-by-side with the previous setup).

首先:看起来我们需要更多关于你想要实现的细节。是否要重新安装产品以修复任何损坏的组件,或者是否要安装新版本的产品(可能与先前的设置并排)。

William's answer looks correct, but there may be some issues with the quotes. The behavior you describes indicates that Windows Installer wasn't able to parse the command line. I haven't tested this but try:

威廉的回答看起来是正确的,但引号可能存在​​一些问题。您描述的行为表明Windows Installer无法解析命令行。我没有测试过,但尝试:

Setup.exe /s /v"/f {11111111-1111-1111-1111-111111111111} /qn"

Setup.exe / s / v“/ f {11111111-1111-1111-1111-111111111111} / qn”

Some background info: setup.exe is an Installshield-provider setup launcher. Anything after /V in the command line is passed "as is" to the main Windows Installer exe file msiexec.exe (msiexec.exe command line parameter reference).

一些背景信息:setup.exe是一个Installshield-provider安装启动器。命令行中/ V之后的任何内容“按原样”传递到主Windows Installer exe文件msiexec.exe(msiexec.exe命令行参数引用)。

Please note that Windows Installer is unlike any prior deployment solution. Once you have installed an MSI, Windows Installer keeps a record of the installation's internal GUIDs. It is hence not possible to install multiple instances of the same product (unless you design the MSI for this).

请注意,Windows Installer与以前的任何部署解决方案都不同。安装MSI后,Windows Installer会记录安装的内部GUID。因此,无法安装同一产品的多个实例(除非您为此设计MSI)。

Some msiexec.exe sample command lines:

一些msiexec.exe示例命令行:

Install:

安装:

  • msiexec.exe /i MySetup.msi /q
  • msiexec.exe / i MySetup.msi / q

Uninstall:

卸载:

  • msiexec.exe /x MySetup.msi /qn
  • msiexec.exe / x MySetup.msi / qn
  • msiexec.exe /x {11111111-1111-1111-1111-111111111111} /qn
  • msiexec.exe / x {11111111-1111-1111-1111-111111111111} / qn

Repair:

修理:

  • msiexec.exe /f MySetup.msi /qn
  • msiexec.exe / f MySetup.msi / qn
  • msiexec.exe /f {11111111-1111-1111-1111-111111111111} /qn
  • msiexec.exe / f {11111111-1111-1111-1111-111111111111} / qn

Admin Image (extract source files from MSI):

管理员映像(从MSI中提取源文件):

  • msiexec.exe /a MySetup.msi TARGETDIR="C:\ExtractSourcesHere"
  • msiexec.exe / a MySetup.msi TARGETDIR =“C:\ ExtractSourcesHere”

Remove /qn from any of the above command-lines to run interactively instead of silently.

从上述任何命令行中删除/ qn以交互方式而不是静默方式运行。

#2


1  

InstallShield@2009

的InstallShield @ 2009

Add follow code:

添加以下代码:

function OnMaintUIBefore() ... ... begin // if is silent mode then set as Repair mode and proceed if (MODE = SILENTMODE) then nType = REPAIR; goto Dlg_SdFeatureTree; endif;

function OnMaintUIBefore()...... ...开始//如果是静音模式然后设置为修复模式并继续if(MODE = SILENTMODE)然后nType = REPAIR;转到Dlg_SdFeatureTree;万一;

#3


1  

I just found the solution: For Basic MSI, open the Property Manager view and set the property _IsMaintenance to "Reinstall".

我刚刚找到了解决方案:对于Basic MSI,打开Property Manager视图并将属性_IsMaintenance设置为“Reinstall”。

#4


0  

Setup.exe /s /v"/f {11111111-1111-1111-1111-111111111111}" /v"/qn"

where "{11111111-1111-1111-1111-111111111111}" is the ProductCode GUID of the installation you want to repair.

其中“{11111111-1111-1111-1111-111111111111}”是您要修复的安装的ProductCode GUID。