用于安装MSI的批处理脚本

Ama*_*man 8 installer windows-installer batch-file silent-installer

我想第一次写一个.bat.

我正在尝试使用脚本安装.msi,目前我们通过双击手动安装.

路径来自:d:/installed sw/$folder/.msi

路径:D:/program files/app/

$folder 意味着,它每次都不同,因为我们正在安装新的msi来安装,这些msi是在当前日期创建的文件夹中提供的.

这是我正在尝试的脚本:

@echo off
Title HOST: Installing Updates on %computername%
echo %computername%
set server=\\SERVERNAME or PATH\msifolder
:select
cls
echo Select one of the Following MSI Install Folders for installation task.
echo.
dir %server% /A:D /B
SET /P MSI=Please enter the MSI Folder to install: 
SET source=%server%\%MSI%
echo Selected Installation %MSI%
echo.
echo.

:verify
ECHO Is This Correct?
echo.
echo.
ECHO 0: ABORT INSTALL
ECHO 1: YES
ECHO 2: NO,RE-SELECT
SET /p choice=Select YES, NO or ABORT? [0,1,2]:
     if /i [%choice%]==[0] endlocal&goto end
     if [%choice%]==[] goto BCurrentlocal
     if [%choice%]==[1] goto yes
 if [%choice%]==[2] goto no
 endlocal

:no
goto select
:yes
set FILENAME=%MSI%
call %source%\%FILENAME%.msi
echo beginning %MSI% installation
pause
echo Exiting Install Script....
PING -n 4 127.0.0.1 >nul
exit
Run Code Online (Sandbox Code Playgroud)

符合set server我正在添加路径.

SET /P MSI是为了路径.

但是,它不起作用.

任何人都可以指导我做错了什么吗?

Ste*_*mul 17

这是如何静默安装普通的MSI文件:

msiexec.exe /i c:\setup.msi /QN /L*V "C:\Temp\msilog.log"
Run Code Online (Sandbox Code Playgroud)

快速解释:

 /L*V "C:\Temp\msilog.log"= verbose logging
 /QN = run completely silently
 /i = run install sequence 
Run Code Online (Sandbox Code Playgroud)

msiexec.exe的命令行是广泛与各种选项的支持.以下是同一命令行界面的另一个概述.这是一个带注释的版本(已被破坏,通过后台机器复活).

也可以使用诸如forWarts之类的for循环之类的构造使批处理文件缩短很多.

如果在安装过程中必须选中复选框,则必须在复选框中找到相应的PUBLIC PROPERTIES,并在命令行中将其设置为:

msiexec.exe /i c:\setup.msi /QN /L*V "C:\Temp\msilog.log" STARTAPP=1 SHOWHELP=Yes
Run Code Online (Sandbox Code Playgroud)

每个MSI的这些属性都不同.您可以通过详细日志文件或在Orca中打开MSI 或其他适当的工具来查找它们.您必须在对话框控件部分或属性表中查找属性名称.尝试运行安装程序并首先创建详细日志文件,然后在日志中搜索消息ala"设置属性...",然后查看属性名称.然后将此属性与日志文件中的值一起添加到命令行.

另外看看如何使用转换来自定义MSI,而不仅仅是设置命令行参数:如何更好地利用MSI文件