我编写了以下代码,多次运行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
答案 0 :(得分:0)
它完全按照预期工作。安装软件包后运行它之后。因此,在后续安装中,您的选择可能是卸载或修复。如果你认为还有其他选择......(比如修改)可以这样做:
"C:\AHSInstall\Apple\Apple.msi" /?
这应该向您展示可供选择的选项。
答案 1 :(得分:0)
已安装的产品由其ProductCode(和PackageCode)定义,因此,如果您想再次安装相同的产品,则必须更改ProductCode(和PackageCode),然后才能安装其他产品。显然,如果其他一切都相同(快捷方式,文件位置,注册表项等),那么您将覆盖文件,注册表项,快捷方式等,因此有很多机会可以表现出奇怪的行为。
另一方面,如果要用包含更新文件的新版本等替换现有产品,则需要进行重大升级以安装新产品并替换旧产品。但是你还没有真正描述过你的最终目标 - 你已经决定要有一个需要重新安装MSI的解决方案,但我们并不知道这个最终目标。