我需要在我的Wix项目中包含所有文件依赖项,手动执行它是一件痛苦的事。所以我搜索了网站并找到了这个批处理文件。我按照步骤但得到了错误。批处理文件的作用是扫描所有项目并生成wxs文件。
@echo off
set SOLUTIONDIR=%1
set OUTPUTFILE=%2
echo Starting Dependency check...
echo ^<?xml version="1.0" encoding="UTF-8"?^> > %OUTPUTFILE%
echo ^<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"^> >> %OUTPUTFILE%
echo ^<Fragment^> >> %OUTPUTFILE%
echo ^<ComponentGroup Id="MesDependance" Directory="INSTALLFOLDER"^> >> %OUTPUTFILE%
for %%F in (%SOLUTIONDIR%ClientSetup\bin\Debug\*.dll) do (
echo "-- Adding %%~nxF"
echo ^<Component Id="%%~nF"^> >> %OUTPUTFILE%
echo ^<File Id="%%~nF" Name="%%~nxF" Source="%%~dpnxF" Vital="yes" KeyPath="yes" DiskId="1"/^> >> %OUTPUTFILE%
echo ^</Component^> >> %OUTPUTFILE%
)
echo ^</ComponentGroup^> >> %OUTPUTFILE%
echo ^</Fragment^> >> %OUTPUTFILE%
echo ^</Wix^> >> %OUTPUTFILE%
echo Dependency check done.
答案 0 :(得分:0)
你的问题是空间。作为一般规则,应引用所有路径(以防它有空格),变量中的内容不应该有引号(删除它们比在需要时添加更难)以及从变量构造路径时内容,引用结果路径
@echo off
set "SOLUTIONDIR=%~1"
set "OUTPUTFILE=%~2"
在没有引号的情况下检索的值,存储在没有引号的变量中。 set
命令中的引号可确保正确存储内容而不添加附加空格
echo Starting Dependency check...
( echo ^<?xml version="1.0" encoding="UTF-8"?^>
echo ^<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"^>
echo ^<Fragment^>
echo ^<ComponentGroup Id="MesDependance" Directory="INSTALLFOLDER"^>
)> "%OUTPUTFILE%"
for %%F in ("%SOLUTIONDIR%ClientSetup\bin\Debug\*.dll") do (
echo -- Adding %%~nxF
( echo ^<Component Id="%%~nF"^>
echo ^<File Id="%%~nF" Name="%%~nxF" Source="%%~dpnxF" Vital="yes" KeyPath="yes" DiskId="1"/^>
echo ^</Component^>
) >> "%OUTPUTFILE%"
)
( echo ^</ComponentGroup^>
echo ^</Fragment^>
echo ^</Wix^>
) >> "%OUTPUTFILE%"
echo Dependency check done.
正确引用所有对文件的引用,包括重定向和内部for in(
,以确保空格没有问题。