如何使用 msiexec 将 MSI 安装到特定目录?

问题描述 投票:0回答:13

我想使用 msiexec 将 MSI 文件安装到特定目录中。我正在使用:

msiexec /i "msi path" INSTALLDIR="C:\myfolder" /qb

使用“INSTALLDIR”无法正常工作,因为 MSI 安装到默认路径而不是指定路径。

path installation windows-installer
13个回答
57
投票

使用

TARGETDIR
而不是 INSTALLDIR。 请注意,TARGETDIR 属性的引号仅在有空格的情况下位于路径周围。

msiexec /i "msi path" TARGETDIR="C:\myfolder" /qb

来源:https://learn.microsoft.com/en-us/windows/win32/msi/targetdir


18
投票

安装Shield 12

INSTALLDIR
代表产品的主安装目录 基于常规 Windows Installer(或 InstallScript MSI)的安装, 例如最终用户启动 Setup.exe 或您的 .msi 数据库。

TARGETDIR
代表InstallScript的安装目录 安装,或基于管理 Windows Installer 安装(当用户使用 /a 运行 Setup.exe 或 MsiExec.exe 时) 命令行开关)。

在 InstallScript MSI 项目中,InstallScript 变量

MSI_TARGETDIR
存储管理安装的目标。

来源: INSTALLDIR 与 TARGETDIR


16
投票

该属性取决于用于创作设置的软件。

遇到问题时,请使用命令行参数

/lv log.txt
转储详细日志。日志会告诉您是否有属性更改会覆盖您自己的选项。 如果您已经安装了该产品,那么第二次运行可能只是更新它而不更改安装位置。您必须先卸载(使用 /x 选项)。

使用的另一个属性是

INSTALLLOCATION


11
投票
msiexec /i "msi path" INSTALLDIR="C:\myfolder" /q

只有这个变体效果很好。


9
投票

就我而言,所有这些都不起作用,最后是

msiexec /i "msinamebla.msi" INSTALLFOLDER="C:\test\" /qb

我按照 ezadeen 的描述检查了 log.txt,并在其中找到了“INSTALLFOLDER”。


4
投票

事实上,两个

INSTALLPATH/TARGETDIR
都是正确的。这取决于 MSI 如何处理。

我使用

wixToolSet
创建味精。在WXS文件中,有一个“目录”节点,其根目录可能如下所示:

<Directory Id="**TARGETDIR**" Name="SourceDir">;

如您所见:

Id
是您应该使用的。


3
投票

这应该有效:

msiexec /i "msi path" TARGETDIR="C:\myfolder" /qb

2
投票

使用 APPLICATIONFOLDER="path" 获取最新的 msiexec


1
投票

对于我的 msi,我必须设置 DEFAULTPATHC="D:\myfolder" 因为稍后在安装过程中,INSTALLDIR 和 TARGETDIR 都被重置以反映 DEFAULTPATHC 中的值


1
投票

这个也对我有用

msiexec /i "msi path" INSTALLDIR="D:\myfolder" /q

我尝试了另外两个迭代,并且都安装在默认版本中 C:\程序文件

INSTALLDIR="D:\myfolder" /q 将其安装在另一个驱动器上。


1
投票

我尝试了

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


0
投票

如果您使用

Advanced Installer
来构建 .msi,您将需要使用
APPDIR=


0
投票

这是我在管理 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)。

© www.soinside.com 2019 - 2024. All rights reserved.