【问题标题】:Add Zip Files to TARGETDIR in WiX在 WiX 中将 Zip 文件添加到 TARGETDIR
【发布时间】:2018-09-19 19:47:15
【问题描述】:

在我的 Visual Studio 2017 解决方案中,我有一个 WiX 3 安装项目,该项目会提取其他几个项目(库、可执行文件、资产、内容)的输出。在解决方案的目录结构下但没有作为项目添加到解决方案中,我有一个使用 webpack 编译一些浏览器扩展的项目。这个 webpack 项目输出到一个 artifacts 文件夹,其中包含每个浏览器的子目录。在每个子目录中是编译后的扩展,文件名中包含版本号,如:

  • 神器
      • myextension-0.1.0.0.zip
      • myextension-0.1.0.1.zip
      • myextension-0.1.0.2.zip

在编译时,最终我想将与版本号匹配的文件,即 myextension-\$(var.VERSION).zip 包含到 MSI 包中,以便在安装过程中将其放入应用程序文件夹中。即使我将版本号(即 myextension-0.1.0.2.zip)硬编码到组件中,我也会收到来自 light 的错误:

LGHT0001: The system cannot find the path specified. (Exception from HRESULT: 0x80070003)

我得到的目录是这样定义的:

<?define ChromeTargetDir=$(var.SolutionDir)Extensions\artifacts\chrome\?>

然后我的组件看起来像这样:

<Component Id="ChromeExt"
             Location="local"
             Guid="GUID_HERE">
    <CreateFolder/>
    <File Id="ChromeExtension"
          Name="myextension-0.1.0.2.zip"
          Source="$(var.ChromeTargetDir)myextension-0.1.0.2.zip"
          KeyPath="yes"/>
</Component>

当我查看由蜡烛创建的 wixobj 时,我看到完整正确的路径被替换为它驻留在我的系统上的文件:

<field>C:\Users\me\source\repos\mysolution\Extensions\artifacts\chrome\myextension-0.1.0.2.zip</field>

所以我的问题是,在我的 WiX 项目中包含“任意”文件的正确方法是什么?

【问题讨论】:

  • 检查您是否最终解决了这个问题?不仅仅是在本地复制文件?
  • 我放弃了这个问题,只是将文件复制到本地并将它们添加到 WiX 设置项目中。
  • 好的,我在聊天中唯一建议的是安全软件干扰(阻止文件),但这没有意义,因为您可以在没有版本号的情况下构建。并且也许安装在您的 Visual Studio 中的其他插件或扩展会干扰?也许与谷歌浏览器有关?我什至进行了测试,发现我的系统没有问题。很神秘。如果您发现它是什么,请告诉我们 - 不知何故。

标签: wix wix3 wix3.11


【解决方案1】:

1) 解决方案与项目目录:我会尝试的第一件事就是替换 $(var.SolutionDir) strong> 与 $(var.ProjectDir) 并尝试重新编译。如果问题是其他问题,我会跟进。让我们先排除这种可能性。

2) 引号:我也在路径周围使用引号:

<?define ChromeTargetDir="C:\Sources\Packages\MyChromeExtension\Files\" ?> 

3) 项目变量:最后,您需要在项目中添加一个引用以使项目引用和变量起作用:@987654321 @。


晦涩难懂:更难理解的原因可能是缺少访问权限(构建过程和 light.exe 看不到文件 - 模拟运行? )。 损坏的文件或文件夹? (尝试更换)。以及任何其他可能对你不利的东西。 锁定文件?

【讨论】:

  • 1) 我尝试过使用 ProjectDir(这是 WiX 项目的目录),然后使用 ..\ 上去目录并返回到扩展目录,但这不起作用。 2) 在变量声明周围添加引号会导致相同的错误 3) 我正在使用 WiXUIExtension,因为我有一个由 mondo 构建的自定义 UI ...我不知道如何解决这个问题。没有“项目”来添加输出,但 WiX 本身不依赖于 Visual Studio 或项目(对吗?)所以我应该能够将我想要的任何文件添加到安装程序,即使它们不在项目。
  • 也许尝试打开您在 wixobj 输出文件中看到的路径?也许你已经有了?你有提到“某事”吗?最后是引号?
  • 是的,我可以直接从 wixobj 文件复制路径,将其粘贴到文件资源管理器中,它会打开目录,文件就在那里。我可以移动或重命名文件,这样就不会锁定它了。
  • 哦,你更新你的第一条评论了吗?否则我没有正确阅读它。当您对整个路径进行硬编码时,它是否会编译。一直到 zip 文件本身的完整绝对路径?如果这不起作用,那么你的机器上有龙:-)。
  • 我可能会尝试reinstall WiX and Votive / Visual Studio Extension 来排除这种可能性。但这很奇怪。一定是小事一桩。
猜你喜欢
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
相关资源
最近更新 更多