如何通过msiexec.exe在安装过程中创建文件夹(在运行时)?

时间:2018-01-30 11:11:58

标签: wix windows-installer msiexec wix3.7

我正在通过msiexec.exe部署一个MSI,但是当我指定path = D:\ folder_name时,不会创建该文件夹。

代码:

<Fragment>
     <Directory Id="TARGETDIR" Name="SourceDir">
       <Directory Id="INSTALLDIR" Name="bin" />
      </Directory>
   </Fragment>

从上面的代码中,我可以实现文件夹“bin”,但我希望“bin”应该进入将通过msiexec.exe创建的文件夹,即

msiexec.exe /i /path/to/msi /quiet PATH=Drive/Folder_name

我们可以有一个解决方法,以便如果文件夹不存在那么它应该创建它并且应该将“bin”放在该文件夹中吗?

2 个答案:

答案 0 :(得分:1)

您需要指定TARGETDIR而不是PATH。请尝试以下方法:

msiexec.exe /i /path/to/msi TARGETDIR="DRIVE/Folder_name" /qb

答案 1 :(得分:1)

目前尚不清楚你在问什么,因为:

  1. 为什么你的msiexec命令行中有PATH?如果要指定实际目录,则应该使用INSTALLDIR = ....

  2. 目录元素似乎不完整。通常你会有类似的东西:

  3. Directory Id="TARGETDIR"   Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLDIR"  Name="MyName">
          <Directory Id="MYDIR"   Name="Fred" />
        </Directory>
      </Directory>
    </Directory>
    

    并在命令行中使用INSTALLDIR指定ProgramFiles或TARGETDIR中的名称以自定义整个路径,或使用MYDIR更改名称“Fred”。

    要回答问题:通过指定将在那里安装文件来创建文件夹。也许更多你的消息来源会表明这一点。

    如果你想创建一个空目录,可以在组件内部使用CreateFolder元素,如WiX文档中所示:

    Creating an empty folder

    这不在您的问题中,但是需要提升的静默安装将失败,因为静默意味着不会显示UAC提升提示,并且安装将继续使用有限的权限并失败。