我需要动态创建一个安装程序,用于文本文件中包含的文件列表。
文件列表包含来自许多不同目录的单个文件,并且很容易定期更改。我正在尝试创建一个安装程序,每次创建文件列表的新版本时都不需要更新。
到目前为止,我正在从cmd脚本内的命令行调用heat.exe,在该命令行中,我在其中使用for loop迭代通过文件列表,在每个文件上运行加热命令以创建组件的片段。
FOR /F "delims=;" %%a IN (FileList.txt) DO (heat.exe file "%%a" -cg ComponentGroupName -gg -g1 -sfrag -dr DirectoryName %%~da -out "%~dp0%%~na.wxs")
显然,这一点代码将为每个组件群提供相同的名称,这构成了一个问题,但是我可以通过使用组件组名称中的文件名来解决该问题。
我正在努力的位是如何将组件组的名称添加到我的project.wsx文件中的特征元素中。
我已经阅读了Wix Toolset文档手册和书中的相关部分Wix 3.6:Windows Installer XML的开发人员指南,无法找出如何执行此操作。
我很感谢我可以使用某种形式的文本替换来实现此目的,但是我希望Wix Toolset中内置了一些东西,因为我不能成为第一个需要动态创建热量生成的组件的人。
ive提出了可以接受的解决方案。IM正在执行的操作是运行CMD文件以生成热量组件。这些组件中的每一个都存储在其自己的组件集中,由ID" ComponentGroup" 文件列表中的迭代计数器识别。
生成了热量成分后,然后在单独的WXS文件中创建一个进一步的组合组,该文件包含由热量创建的每个组件集团的组件grouprefs。
。由于此组件群是从CMD文件创建的,我知道ID的ID,我可以在我的功能中引用它。
@echo off
setlocal enabledelayedexpansion
set /a count = 0
FOR /F "delims=;" %%a IN (FileList.txt) DO (
set /a count=count+1
heat.exe file "%%a" -cg "ComponentGroup!count!" -gg -g1 -sfrag -dr NotSureWhatGoesHereYet %%~da -out "%~dp0%%~na.wxs"
)
(
echo ^<?xml version="1.0" encoding="utf-8"?^>
echo ^<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"^>
echo ^<Fragment^>
echo ^<ComponentGroup Id="ComponentGroup"^>
) > test.wxs
FOR /L %%i IN (1,1,%count%) DO (
echo ^<ComponentGroupRef Id="ComponentGroup%%i" /^> >> Components.wxs
)
(
echo ^</ComponentGroup^>
echo ^</Fragment^>
echo ^</Wix^>
) >> Components.wxs
感谢您的回复。@TomBlodget我从您的第一个答案中汲取了灵感。感谢您的时间