Wix 安装程序 - 根据属性创建文件夹层次结构

2024-04-14

我在用Wix 3.6 http://wixtoolset.org/创建一个设置。我仍在不断学习。那里的信息仍然分散。我正在等待我的 Wix 开发人员指南书到达。

我目前有一个自定义 UI 对话框,用户可以在其中输入一些应用程序配置。该配置的一部分是指定日志文件夹。目前这只是设置一个属性[LogFolder]。默认为 D:\Logs 之类的位置。

我希望安装程序在运行安装程序时创建该目录。我有以下尝试执行此操作,但当我运行安装程序时,它只是在 D: 驱动器上创建了一个名为 [LOGFOLDER] 的文件夹。

<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>

我怎样才能用 Wix 做到这一点?


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

<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>

Remark:

如果 D:\ 是光盘驱动器并且插入了光盘,安装将失败,因为它将尝试创建该文件夹但不会成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Wix 安装程序 - 根据属性创建文件夹层次结构 的相关文章

随机推荐

  • 如何使用 PHP 检查 MySQL 表是否存在?

    理论上听起来很简单 我已经做了相当多的研究 但很难弄清楚这一点 如何检查 MySQL 表是否存在以及它是否执行某些操作 我想一个简单的 php if else 语句可以解决这个问题 有没有办法做到这一点 这就是我对 cwallenpoole
  • 使用 ICertAdmin2::RevokeCertificate 方法撤销 C# 中的证书

    如何将 certadm dll 导入托管项目并使用 RevokeCertificate 方法 我尝试将其添加为引用 但出现错误 因为它不是程序集或 COM 对象 有任何想法吗 UPDATE 我已经尝试过了regsvr32 c certadm
  • 使用 php 获取服务器内存

    有没有办法用 php 知道服务器 linux 发行版 中的可用内存 不使用 linux 命令 编辑 抱歉 目标是了解特定服务器的服务器 虚拟机中可用的内存 即使该内存是共享的 如果你知道这段代码只能在Linux下运行 你可以使用特殊的 pr
  • SBStatusBarController 实例

    有人可以帮我提供如何获取 SBStatusBarController 实例的小样本吗 我查看了很多论坛和源代码 但它对我不起作用 谢谢 好的 我已经找到了如何在没有 SpringBoard 的情况下使用合法手段显示双高状态栏 如通话中状态栏
  • 如何使用 php 从 json 键值中删除所有双引号?

    我得到了一个json数据 我想从 json 键中删除所有双引号 以便能够解析我想要的数据 如果任何键上没有双引号 我当前的代码运行良好 但一旦键上有双引号 那么我的代码就不会解析 json 数据 谁能告诉我如何解决这个问题 谢谢 code
  • 快速验证、自定义异步检查

    因此 我对此进行了大量研究 但遇到了一些问题 router post register async req res gt const newUser await usersDb Define the user const email req
  • 为什么 List listOfArrays = Arrays.asList(new Integer[]{1, 2}) 无法编译? [复制]

    这个问题在这里已经有答案了 1 OK List
  • [outlook]:通过node-imap连接时登录失败

    我试图在本地主机中连接 Imap 但得到如下调试日志 但用户名和密码是正确的 我可以通过网络界面使用登录凭据进行连接 lt CAPABILITY IMAP4 IMAP4rev1 AUTH PLAIN AUTH XOAUTH2 SASL IR
  • 有没有办法判断 JFrame 是否“最大化”(MS Windows)[重复]

    这个问题在这里已经有答案了 我一直在OS X上进行Java应用程序 并没有机会在不同的地方进行充分的测试 有2种不同的JFrames 第二个加载完全代替第一个 因此需要将其大小和位置设置为与第一个相同 这工作正常 但我注意到很多 Windo
  • 如何将使用三元运算符的 C++ 代码移植到 Rust?

    如何将此 C 代码移植到 Rust auto sgnR R gt 0 1 1 我看过一些例子match关键字 但我不明白它是如何工作的 Rust 没有三元运算符 因为不需要它 几乎所有东西都会计算出某个值 并且if else表达式也不例外
  • 访问修改后的关闭

    string files new string 2 files 0 ThinkFarAhead Example Settings Configuration Local xml files 1 ThinkFarAhead Example S
  • 什么是 PHP 匿名函数?

    PHP 中的匿名函数是什么 请给我一个简单的例子好吗 PHP net 有一个关于匿名函数 http php net manual en functions anonymous php在维基百科上你可以读到匿名函数 http en wikip
  • 使图表 js 中的标签响应式

    我很难使 y 轴上的标签响应 我希望标签移动到多行 并在空间不足时具有响应式字体大小 我正在使用 Chart js 数据标签库进行标签在水平条形图的顶部 由于外部图表容器 标签也被隐藏 var chart new Chart ctx typ
  • Redis 块推送直到列表有空位

    我正在寻找类似的东西BLPUSH该命令将阻塞 直到列表的长度低于指定值max size 目的是防止生产者运行速度快于消费者时列表无限增长 功能与 python 非常相似Queue put https docs python org 3 li
  • 如何使用 Memchached 后端和 Zend Framework 有选择地清除缓存(使用标签或其他选项)

    我们在 Web 项目中使用 Memcached 和 Zend Framework 现在 我们需要使用指定的标签有选择地清理缓存Zend Cache API http framework zend com manual 1 10 en zen
  • 带有工作单元/存储库模式的微风

    我只是想知道我应该如何实施微风EFContextProvider在一个单独的数据层项目中 另外 由于该项目是一个类库而不是 MVC 4 应用程序 我应该如何将其包含到我的项目中 我真的不需要 Breeze NuGet 包中的全部技巧 只需E
  • SymPy 的多彩图

    我试图在 SymPy 中绘制函数 x 2 的图 并希望用线 x 3 y 9 覆盖它 然后在某些点周围画一个圆 我已经用代码完成了上述所有操作 import sympy as sp x sp Symbol x first plot the f
  • 如何配置 Android sdkmanager 命令行工具以使用自定义存储库?

    是否可以配置 Google 的 Android sdkmanager 通过自定义存储库而不是下载依赖项dl google com android repository 背景 我正在公司防火墙后面设置 Android 构建代理 无法直接访问
  • Python:导入模块

    假设我有一个 python 模型fibo py定义如下 Fibonacci numbers module print This is a statement def fib n a b 0 1 while b lt n print b a
  • Wix 安装程序 - 根据属性创建文件夹层次结构

    我在用Wix 3 6 http wixtoolset org 创建一个设置 我仍在不断学习 那里的信息仍然分散 我正在等待我的 Wix 开发人员指南书到达 我目前有一个自定义 UI 对话框 用户可以在其中输入一些应用程序配置 该配置的一部分