我使用维克斯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>
我如何与维克斯做到这一点?
第一步是创建一个属性设置为你想要的值:
<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:\为光盘驱动器,你有一个光盘插入,安装会失败,因为它会尝试创建文件夹,它是不会成功的。
Name属性是不是formattable所以你可以使用它的属性。 该ID“LogFolderDir”没有父如“ProgramFilesFolder”所以它默认为与磁盘空间量最大音量。在这种情况下d,但情况因人而异。
这是危险的,默认为d:因为d:可能不存在。 如何你可以设置该目录了是ID为“LOGDIR” NAME =“日志”,并使其成为INSTALLDIR / INSTALLLOCATION目录的子元素。 然后在您的自定义UI,电线再升BrowseFolder对话框让用户覆盖的能力。 或者,使其与所需的日志关联功能,使股票的特征选择对话框中可以选择的功能和浏览的目标文件夹。
如果您仍然希望它“默认”到d:\ Logs中我会做的是有一个检查,看看是否d自定义操作:存在且是一个固定磁盘。 如果是这样,设置LOGDIR = d:\日志