WiX 3.11.1 - 错误LGHT0103:系统找不到该文件

时间:2018-01-19 11:46:05

标签: wix windows-installer

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的价值尝试了无穷无尽的语法变化而没有快乐(除了全名)。

帮助解决非常非常感谢。谢谢!

2 个答案:

答案 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>标记