Path 在特定目录中安装带有msiexec的msi

Path 在特定目录中安装带有msiexec的msi,path,installation,windows-installer,Path,Installation,Windows Installer,我想在特定目录中安装带有msiexec的msi。我正在使用: msiexec /i "msi path" INSTALLDIR="C:\myfolder" /qb 它不适用于“INSTALLDIR”,因为msi安装在默认路径中,而不是我的特定路径中。使用TARGETDIR而不是INSTALLDIR。请注意,对于空格,TARGETDIR属性的引号仅在路径周围 msiexec/i“msi path”TARGETDIR=“C:\myfolder”/qb 只有这种变体工作得很好。InstallShie

我想在特定目录中安装带有msiexec的msi。我正在使用:

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

它不适用于“INSTALLDIR”,因为msi安装在默认路径中,而不是我的特定路径中。

使用TARGETDIR而不是INSTALLDIR。请注意,对于空格,TARGETDIR属性的引号仅在路径周围

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

只有这种变体工作得很好。

InstallShield 12

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

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

在InstallScript MSI项目中,InstallScript变量
MSI_TARGETDIR
存储管理安装的目标

来源:

这应该可以:

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

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

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

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

正如你所看到的:
Id
是你应该使用的。

这个对我来说也很有用

msiexec /i "msi path" INSTALLDIR="D:\myfolder" /q
我已经尝试了另外两个迭代,并且都安装在默认版本中 C:\程序文件

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

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

对于我的msi,我必须设置DEFAULTPATHC=“D:\myfolder”,因为在安装过程的后期,INSTALLDIR和TARGETDIR都被重置以反映DEFAULTPATHC中的值。在我的情况下,所有这些都不起作用,最后都被禁用

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

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

如果您使用了
高级安装程序来构建.msi,您将需要使用
APPDIR=
使用APPLICATIONFOLDER=“path”对于最新的msiexec

我尝试在管理PowerShell中使用
msiexec
安装
.msi

对于两个驱动器,
C:
D:
(总共14个),我已经做了7次,用不同的参数代替
ARG
,并且使用相同的理想路径值

模板:
PS C:\WINDOWS\system32>msiexec/a D:\users\username\downloads\software\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\
    • 当从一个 Divernet drive:似乎什么都不做

我尝试了
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'.
因此,我将命令改为have
APPDIR
,而不是上面提到的args。它就像一个符咒

msiexec /i "path_to_msi" APPDIR="path_to_installation_dir" /q

如果要将安装进度复制到日志文件,请添加
/lv

是什么让您认为它可以与INSTALLDIR一起使用?你知道MSI文件是用什么工具构建的吗?这对我来说也很有用。您使用的属性名称在很大程度上取决于用于构建MSI文件的工具。我的MSI文件是使用WiX 3.11.1构建的,似乎INSTALLFOLDER是WiX使用的属性名称,而TARGETDIR是其他人使用的。此外,请确保使用完全限定路径。否则,它可能会失败,并发出警告,说明它“无法访问网络位置”。这对于带有
/i
的INSTALLFOLDER和带有
/a
的TARGETDIR都是正确的。这实际上只是对其他答案的补充;但是对于
/lv
/x
提示+1。这确实是最好的答案,因为它解决了如何为任何应用程序指定安装目录的问题。使用log.txt确定要为应用程序设置的适当属性。这是最佳答案(/lv log.txt),因为属性名称可能会有很大差异。在我的例子中,它是APPLICATIONFOLDER。这似乎是从?中获取的?。
msiexec /i "path_to_msi" APPDIR="path_to_installation_dir" /q