维克斯安装程序 - 创建一个基于属性的文件夹层次(Wix Installer - Create Fo

2019-09-22 13:18发布

我使用维克斯3.6创建的设置。 我还在学习,我走。 那里的信息仍散落。 我只是在等待我的维克斯开发指南书到达。

我现在有用户在其中输入一些应用程序配置自定义用户界面对话框。 该配置的一部分是用来指定日志文件夹。 这在目前这只是设置属性[LogFolder。 这是默认为像d:\ Logs中。

我想安装程序运行安装时创建的目录。 我有以下的,试图做到这一点,但它只是创建了一个名为[LOGFOLDER]在d文件夹:驱动器,当我运行安装程序。

<Product ...
    <Directory Id="TARGETDIR" Name="SourceDir" >
        <Directory Id="LogFolderDir" Name="[LOGFOLDER]" >
            <Component Id="LogFolderComponent" Guid="{7E7D6916-B321-40D6-ABAD-696B57A6E5FB}" KeyPath="yes">
                <CreateFolder />
            </Component>
        </Directory>
    </Directory>
    ...
</Product>

我如何与维克斯做到这一点?

Answer 1:

第一步是创建一个属性设置为你想要的值:

<Product>
  <Property Id="LOGFOLDER" Value="D:\Logs" />
</Product>

第二个步骤是创建,您可以设置该属性(或者其他的东西来改变它的值)的对话:

<Dialog>
  <Control Id="Edit_LogFolder" Type="Edit" Property="LOGFOLDER" />
</Dialog>

然后,你需要改变你的目录结构在默认位置创建该文件夹:

<Directory Id="ProgramFilesFolder">
  <Directory Id="INSTALLFOLDER" Name="MyApp">

    <Directory Id="LOGFOLDER" Name="Logs" />

  </Directory>
</Directory>

最后一步是创建将创建目录,像这样的组件:

<ComponentGroup Id="ComponentGroup_LogFolder">
  <Component Id="Component_LogFolder" Guid="" Directory="LOGFOLDER">

    <CreateFolder Directory="LOGFOLDER" />

  </Component>
</ComponentGroup>

备注:

如果d:\为光盘驱动器,你有一个光盘插入,安装会失败,因为它会尝试创建文件夹,它是不会成功的。



Answer 2:

Name属性是不是formattable所以你可以使用它的属性。 该ID“LogFolderDir”没有父如“ProgramFilesFolder”所以它默认为与磁盘空间量最大音量。在这种情况下d,但情况因人而异。

这是危险的,默认为d:因为d:可能不存在。 如何你可以设置该目录了是ID为“LOGDIR” NAME =“日志”,并使其成为INSTALLDIR / INSTALLLOCATION目录的子元素。 然后在您的自定义UI,电线再升BrowseFolder对话框让用户覆盖的能力。 或者,使其与所需的日志关联功能,使股票的特征选择对话框中可以选择的功能和浏览的目标文件夹。

如果您仍然希望它“默认”到d:\ Logs中我会做的是有一个检查,看看是否d自定义操作:存在且是一个固定磁盘。 如果是这样,设置LOGDIR = d:\日志



文章来源: Wix Installer - Create Folder hierarchy based on Property
标签: installer wix