批量运行多次成功运行MSI包

时间:2014-02-17 22:55:32

标签: batch-file cmd windows-installer

我编写了以下代码,多次运行single.msi包但是它只成功运行一次,并在下次提供“修复”或“卸载”选项。 我需要解决这个问题并让它运行多次。

我已经读过,我需要创建一个转换(.mst),以便成功执行此类操作,但不确定如何执行此操作。

请注意“OID_VALUE”& “LOGGING_SERVICE_URI_VALUE”是我需要传递给.msi包运行的值。

@echo OFF

setLocal enableDELAYedexpansion

:MENU
ECHO.
ECHO Select the Environment you are running the batch
ECHO.
ECHO    1.  UAT
ECHO    2.  Production
ECHO    3.  EXIT
ECHO.
CHOICE /C 123 /N /M "Select option:"
if errorlevel 3 EXIT                                                                                
if errorlevel 2 goto PROD                                      
if errorlevel 1 goto UAT

:UAT
set URI=https://log.acdmuat.appleclouds.com/LoggingService/
GOTO LOGGINGURI

:PROD
set URI=https://log.acdm.appleclouds.com/LoggingService/

:LOGGINGURI
for /f "delims=" %%a in (oid.txt) do (
msiexec /q /l* c:\temp\installer.log /i 
"C:\AHSInstall\Apple\Apple.msi" OID_VALUE="%%a" LOGGING_SERVICE_URI_VALUE=%URI%
)

Pause

2 个答案:

答案 0 :(得分:0)

它完全按照预期工作。安装软件包后运行它之后。因此,在后续安装中,您的选择可能是卸载或修复。如果你认为还有其他选择......(比如修改)可以这样做:

"C:\AHSInstall\Apple\Apple.msi" /?

这应该向您展示可供选择的选项。

答案 1 :(得分:0)

已安装的产品由其ProductCode(和PackageCode)定义,因此,如果您想再次安装相同的产品,则必须更改ProductCode(和PackageCode),然后才能安装其他产品。显然,如果其他一切都相同(快捷方式,文件位置,注册表项等),那么您将覆盖文件,注册表项,快捷方式等,因此有很多机会可以表现出奇怪的行为。

另一方面,如果要用包含更新文件的新版本等替换现有产品,则需要进行重大升级以安装新产品并替换旧产品。但是你还没有真正描述过你的最终目标 - 你已经决定要有一个需要重新安装MSI的解决方案,但我们并不知道这个最终目标。