【问题标题】:WiX creating obj file in strange placeWiX在陌生的地方创建obj文件
【发布时间】:2011-03-08 16:48:54
【问题描述】:

在我的 WiX 3.5 项目中,我通过链接包含了一个 wxs 文件。即,wxs 文件不在项目文件夹中,它在文件夹结构中相当远,并且使用 Visual Studio 的“添加为链接”工具包含在内。

这工作正常。但它确实有一个奇怪的副作用,即 WiX 在一个奇怪的位置为包含的 wxs 创建了 obj 文件,创建了几个文件夹以在某种程度上(但不正确)模仿 WiX 项目文件夹和 wxs 文件所在的文件夹之间的路径结构位于。

有什么办法可以避免这种情况,所以 WiX 在与其他 obj 文件相同的位置创建此 obj 文件,或者在 wxs 文件旁边创建它,而不是在中间创建它?

【问题讨论】:

    标签: wix votive


    【解决方案1】:

    我一直以为这就是candle.exe-out 命令行参数的用途。你试过玩它吗?

    【讨论】:

    • 我试过这个,但无法让它工作。确实,指定 -out 确实解决了我原来的问题 - 没有创建奇怪的文件夹结构。但后来我遇到了其他问题。如果我指定“-out obj\Debug\”(人们会认为这是显而易见的地方),那么我会收到一个编译错误,说我通过链接包含的对对话框的引用是未定义的。
    • 如果我指定“-out obj\”那么编译工作正常,但链接步骤显然找不到任何输入。该项目“成功”,但没有最终输出,也没有 MSI。我可能需要告诉 light.exe 在 obj 文件夹而不是 obj\Debug 中查找它的输入,但如何或在哪里做这件事对我来说并不明显。 (我在 Visual Studio 下使用 Votive MSBuild 脚本。)
    • 你试过light.exe的-b 开关吗?它默认为当前目录,但您可以随意修改它以查找您的 obj 文件...
    • 感谢您的帮助。在摆弄它并将我的头发拉了一段时间之后,我现在已经开始工作了。顺便说一句,我上面提到的“编译器错误”实际上是一个 light.exe 错误。无论如何,我需要做的是在编译器设置上加上“-out obj\Debug\”,在链接器设置上加上“-b obj\Debug\obj\Debug\IncludedFileName.wixobj”。
    • 该死,我说得太早了。我现在已经确定这个“修复”会导致 MSBuild 始终进行构建,而不是在没有输入文件更改时跳过构建。对我来说,这种治疗方法比“疾病”更糟糕,所以我会回去让 WiX 创建奇怪的文件夹,并在我注意到它们时咬紧牙关。
    【解决方案2】:

    事实证明这是 WiX 3.5 中的一个错误,并已记录在此处的博客条目中: http://www.paraesthesia.com/archive/2011/02/07/wix-3-5-2519-0-incorrect-intermediate-object-path-for.aspx

    该博客文章还提供了一种解决方法,尽管它对我来说不太奏效。对于我的情况,我必须在路径中添加一个额外的反斜杠,而不是

       <ObjectPath>obj\$(Configuration)</ObjectPath>
    

    我需要指定

       <ObjectPath>obj\$(Configuration)\</ObjectPath>
    

    感谢 Travis Illig 的博客文章,感谢 WiX-Users 邮件列表中的 Edwin Castro 将我指向博客文章,也感谢 Yan Sklyarenko 的帮助。

    编辑:

    情节变厚了——这不是错误,而是一个功能!

    它本身不是在 WiX 中,而是在 Votive / MSBuild 中。

    https://sourceforge.net/mailarchive/message.php?msg_id=27244936

    无论如何,重要的是,使用 Travis Illig 在他的博客文章中建议的解决方法很容易解决。

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      相关资源
      最近更新 更多