我想使用 msiexec 将 MSI 文件安装到特定目录中。我正在使用:
msiexec /i "msi path" INSTALLDIR="C:\myfolder" /qb
使用“INSTALLDIR”无法正常工作,因为 MSI 安装到默认路径而不是指定路径。
使用
TARGETDIR
而不是 INSTALLDIR。 请注意,TARGETDIR 属性的引号仅在有空格的情况下位于路径周围。
msiexec /i "msi path" TARGETDIR="C:\myfolder" /qb
来源:https://learn.microsoft.com/en-us/windows/win32/msi/targetdir
安装Shield 12
代表产品的主安装目录 基于常规 Windows Installer(或 InstallScript MSI)的安装, 例如最终用户启动 Setup.exe 或您的 .msi 数据库。INSTALLDIR
代表InstallScript的安装目录 安装,或基于管理 Windows Installer 安装(当用户使用 /a 运行 Setup.exe 或 MsiExec.exe 时) 命令行开关)。TARGETDIR
在 InstallScript MSI 项目中,InstallScript 变量
存储管理安装的目标。MSI_TARGETDIR
该属性取决于用于创作设置的软件。
遇到问题时,请使用命令行参数
/lv log.txt
转储详细日志。日志会告诉您是否有属性更改会覆盖您自己的选项。
如果您已经安装了该产品,那么第二次运行可能只是更新它而不更改安装位置。您必须先卸载(使用 /x 选项)。
使用的另一个属性是
INSTALLLOCATION
。
msiexec /i "msi path" INSTALLDIR="C:\myfolder" /q
只有这个变体效果很好。
就我而言,所有这些都不起作用,最后是
msiexec /i "msinamebla.msi" INSTALLFOLDER="C:\test\" /qb
我按照 ezadeen 的描述检查了 log.txt,并在其中找到了“INSTALLFOLDER”。
事实上,两个
INSTALLPATH/TARGETDIR
都是正确的。这取决于 MSI 如何处理。
我使用
wixToolSet
创建味精。在WXS文件中,有一个“目录”节点,其根目录可能如下所示:
<Directory Id="**TARGETDIR**" Name="SourceDir">;
如您所见:
Id
是您应该使用的。
这应该有效:
msiexec /i "msi path" TARGETDIR="C:\myfolder" /qb
使用 APPLICATIONFOLDER="path" 获取最新的 msiexec
对于我的 msi,我必须设置 DEFAULTPATHC="D:\myfolder" 因为稍后在安装过程中,INSTALLDIR 和 TARGETDIR 都被重置以反映 DEFAULTPATHC 中的值
这个也对我有用
msiexec /i "msi path" INSTALLDIR="D:\myfolder" /q
我尝试了另外两个迭代,并且都安装在默认版本中 C:\程序文件
INSTALLDIR="D:\myfolder" /q 将其安装在另一个驱动器上。
我尝试了
TARGETDIR
、INSTALLLOCATION
和 INSTALLDIR
args,但它仍然安装在默认目录中。
所以我查看了日志,发现有一个参数用于设置应用程序目录,并且它被设置为默认值。
MSI (s) (50:94) [09:03:13:374]: Running product '{BDAFD18D-0395-4E72-B295-1EA66A7B80CF}' with elevated privileges: Product is assigned.
MSI (s) (50:94) [09:03:13:374]: PROPERTY CHANGE: Adding APPDIR property. Its value is 'E:\RMP2'.
MSI (s) (50:94) [09:03:13:374]: PROPERTY CHANGE: Adding CURRENTDIRECTORY property. Its value is 'C:\Users\Administrator'.
所以我将命令更改为
APPDIR
而不是上面提到的参数。它就像一个魅力。
msiexec /i "path_to_msi" APPDIR="path_to_installation_dir" /q
如果要将安装进度复制到日志文件,请添加
/lv
。
如果您使用
Advanced Installer
来构建 .msi,您将需要使用 APPDIR=
这是我在管理 PowerShell 中使用
.msi
安装 msiexec
的尝试。
我已经为 2 个驱动器
C:
和 D:
(总共 14 个)中的每一个做了 7 次,并使用不同的参数代替 ARG
和相同的理想路径值。
模板:
PS C:\WINDOWS\system32> msiexec /a D:\users\username\downloads\soft\publisher\softwarename\software.msi /passive ARG="D:\Soft\publisher\softwarename"
ARG
s:
TARGETDIR
ProgramFilesFolder
(还有一个类似于
默认安装路径,例如
D:\Soft\BlenderFoundation\Blender\ProgramFilesFolder\Blender Foundation\Blender\2.81\
)和目标处的 .msi
的副本
文件夹。INSTALLDIR
、INSTALLPATH
、INSTALLFOLDER
、INSTALLLOCATION
、APPLICATIONFOLDER
、APPDIR
D:\Blender Foundation\Blender\2.81\
)您可以尝试
ARPINSTALLLOCATION
(docs)。