Path 在特定目录中安装带有msiexec的msi
我想在特定目录中安装带有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 /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'.
因此,我将命令改为haveAPPDIR
,而不是上面提到的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