【问题标题】:Install MSI with msiexec into specific directory使用 msiexec 将 MSI 安装到特定目录
【发布时间】:2012-01-12 18:04:29
【问题描述】:

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

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

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

【问题讨论】:

  • 是什么让您认为它可以与 INSTALLDIR 一起使用?你知道 MSI 文件是用什么工具构建的吗?

标签: path installation windows-installer


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    InstallShield 12

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

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

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

    来源:INSTALLDIR vs. TARGETDIR

    【解决方案3】:

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

    【讨论】:

    • 这实际上只是对这里其他答案的补充;但为/lv/x 提示+1。
    • 这确实是最好的答案,因为它解决了如何为 any 应用程序指定安装目录。使用 log.txt 确定要为您的应用程序设置的适当属性。
    • 这是最佳答案 (/lv log.txt),因为属性名称可能会有很大差异。就我而言,它是 APPLICATIONFOLDER。
    【解决方案4】:
    msiexec /i "msi path" INSTALLDIR="C:\myfolder" /q
    

    只有这个变种运作良好。

    【讨论】:

      【解决方案5】:

      在我的情况下,他们都没有工作,最后是

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

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

      【讨论】:

      • 这对我也有用。您使用的属性名称很大程度上取决于用于构建 MSI 文件的工具。我的 MSI 文件是使用 WiX 3.11.1 构建的,看起来 INSTALLFOLDER 是 WiX 使用的属性名称,而 TARGETDIR 是其他人使用的。
      • 另外,请确保使用完全限定的路径。否则,它可能会失败并显示“无法访问网络位置”的警告。对于带有/i 的INSTALLFOLDER 和带有/a 的TARGETDIR 都是如此。
      • 我得出了和你一样的结论,发现只有INSTALLFOLDER的使用在我的批量安装中有效。奇怪的是,MSN 上没有记录此属性:Property Reference
      【解决方案6】:

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

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

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

      如您所见:Id 是您应该使用的。

      【讨论】:

        【解决方案7】:

        这应该可行:

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

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

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

            【讨论】:

              【解决方案10】:

              这个也适合我

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

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

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

              【讨论】:

                【解决方案11】:

                我尝试了TARGETDIRINSTALLLOCATIONINSTALLDIR args,但它仍然安装在默认目录中。 所以我查看了日志,并且有这个 arg 用于设置应用程序目录并且它被设置为默认值。

                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 而不是上面提到的 args。它就像一个魅力。

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

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

                【讨论】:

                  【解决方案12】:

                  如果您使用 Advanced Installer 构建您的 .msi,您将希望使用 APPDIR=

                  【讨论】:

                    【解决方案13】:

                    这是我在管理 PowerShell 中使用 msiexec 安装 .msi 的尝试。

                    我已经为 C:D:(共 14 个)两个驱动器中的每一个做了 7 次,用不同的参数代替 ARG 和相同的理想路径值。

                    模板:PS C:\WINDOWS\system32&gt; msiexec /a D:\users\username\downloads\soft\publisher\softwarename\software.msi /passive ARG="D:\Soft\publisher\softwarename"

                    ARGs:

                    • 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\
                      • 当从一个 不同的驱动器:似乎什么都不做

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2018-08-18
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-12-30
                      • 1970-01-01
                      相关资源
                      最近更新 更多