【发布时间】: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 中的其他插件或扩展会干扰?也许与谷歌浏览器有关?我什至进行了测试,发现我的系统没有问题。很神秘。如果您发现它是什么,请告诉我们 - 不知何故。