Windows 10 Pro版本1703上的WiX 3.11.1 64位。不使用Visual Studio。使用简单的文本文件如下。
以下是我发现的情况的测试案例。
myapp.wxs是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
<Product Id="*"
Name="MyApp"
Language="1033"
Version="1.0.0.0"
Manufacturer="Me"
UpgradeCode="PUT-GUID-HERE">
<Package InstallerVersion="301"
Compressed="yes"
InstallScope="perMachine"
Manufacturer="Me"
Description="My App"
Keywords=".NET,Installer,MSI" />
<MediaTemplate EmbedCab="yes" />
<UIRef Id="WixUI_Minimal" />
<UIRef Id="WixUI_ErrorProgressText" />
<!-- ****************************************** -->
<WixVariable Id="WixUIDialogBmp"
Value="[CMP_Refresh_file]" />
<!-- ****************************************** -->
<Feature Id="MyFeature"
Title="MyApp Feature"
Description="Installs MyApp"
Level="1">
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="TestFolder" Name="TESTfolder" />
</Directory>
<Component Id="CMP_Refresh_file" Guid="*" Directory="TESTfolder">
<File Id="FILE_RefreshPNG" Source= "Refresh.png" KeyPath="yes" />
</Component>
</Fragment>
</Wix>
myapp.bat是:
"C:\Program Files (x86)\WiX Toolset v3.11\bin\candle.exe" myapp.wxs
"C:\Program Files (x86)\WiX Toolset v3.11\bin\light.exe" myapp.wixobj -ext WixUIExtension -ext WixUtilExtension
@pause
当我运行.bat文件时,它找不到CMP_Refresh_file(错误LGHT0103:系统找不到该文件)。文件夹TEST文件夹是.wxs文件所在文件夹的直接子文件夹。
替换完整文件路径可以解决问题。但这不是我想要的,因为我将拥有大量的文件和文件夹。 (另外,如果我把文件放在与.wxs文件相同的文件夹中,当然它会找到它。)
我怀疑这纯粹是一种由我的无知引起的句法问题。无论如何,我为WixUIDialogBmp的价值尝试了无穷无尽的语法变化而没有快乐(除了全名)。
帮助解决非常非常感谢。谢谢!
答案 0 :(得分:0)
尝试引用已安装路径的.as-console-wrapper { max-height: 100% !important; top: 0; }
。有关详细信息,请参阅Formatted Strings。
答案 1 :(得分:0)
查看您的WiX代码我可以看到您在MSI目标和源文件夹路径之间感到困惑。 Directory标记用于在运行MSI的计算机上创建一个文件夹(您要在其中部署应用程序) - 它与打包文件的源文件夹无关。
将文件路径替换为:
<File Id="FILE_RefreshPNG" Source= "\TESTfolder\Refresh.png" KeyPath="yes"/>
如您所见,文件 - &gt;应该参考您的WXS文件路径写入源属性路径。
如果您计划在客户端计算机上的testfolder下部署refresh.png,那么您必须在</Directory>
标记后立即关闭<File>
标记