无法构建 WixStdBootstrapper应用程序 - 找不到错误"C:toolsWixBuild.props"



我正在尝试更改WixStandardBootstrapperApplication.cpp,并根据此链接的建议生成dll。我已经下载了wix310调试源代码,并正在修改wix310 debug\src\ext\BalExtension\wixstdba\location下的文件。在这个位置下有一个wixstdba.vcxproj文件,我正试图使用Visual Studio 2012打开它。每当我尝试这样做时,我都会收到错误:

Unable to read the project file "wixstdba.vcxproj". The imported project "C:toolsWixBuild.props" was not found.

我不知道该怎么做才能纠正这一点。此外,根据引用的链接,我认为我正在更新正确的文件,但如果不是这样,请告诉我。这方面的任何帮助都将是巨大的。提前谢谢。

在您的vcxproj中有这样一行:

<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), wix.proj))toolsWixBuild.targets" />

调试源并不是wix的真正来源。它包含了所有的wix源文件,但并不是真正可构建的。这个zip包含所有已构建的pdb,仅用于调试。

您想从wixtoolset的github下载wix源代码,以便构建wixstdba。但是,这是针对当前版本3.10.3的,可能有一些特定于版本的更改,但我认为使用此处针对wix 3.10.2构建的dll不会有任何问题,因为引擎和引导程序应用程序接口应该保持不变。

但是,您应该能够仅使用构建所有这些WixStdBA项目。您将不得不通过wixstdba文件夹进行复制。编辑vcxproj并删除上面提到的导入行(它应该在底部附近)。

现在,将此项目添加到visual studio中的新解决方案或安装程序解决方案中。我们需要添加include和库目录。所有这些包含目录都将位于您的wix安装位置(默认C:\Program Files(x86)\wix Toolset v3.10)。在"属性"->"C/C++"->"常规"->"其他包含目录"中,添加您的wix-SDK包含路径。如果您正在使用visual studio 2013,您可以使用完整路径,也可以使用"$(WIX)\SDK\vs2013\inc"$(WIX)应该引用WIX环境变量,该变量指向安装WIX时添加的安装目录。如果你将在安装了wix的构建系统上构建,这应该是更好的选择,因为不同机器的位置可能不同。

现在,对于添加库目录,我们转到Properties->Linker->General->Additional library Directoryes并添加正确的lib路径。如果您使用的是visual studio 2013,则需要放入$(WIX)\SDK\vs2013\lib\x86。最后,我们需要引用构建引导程序dll所需的库。在Linker->Input->Additional Dependencies下,添加"dutil.lib;balutil.lib"。我的附加依赖项有很多东西,我不记得它是否默认存在。这是我的附加依赖项,无论如何

dutil.lib;balutil.lib;advapi32.lib;comctl32.lib;comdlg32.lib;gdi32.lib;gdiplus.lib;kernel32.lib;msimg32.lib;odbc32.lib;odbccp32.lib;ole32.lib;oleaut32.lib;shell32.lib;shlwapi.lib;user32.lib;uuid.lib;wininet.lib;winspool.lib;version.lib;%(AdditionalDependencies)

有了这个,应该能够构建wixstdba项目并构建dll。在不编辑任何代码的情况下,这应该与wix包含的wixstdba.dll完全相同。

你可以尝试引用这个dll,而不是wix包含的dll(必须定义你自己的BootstrapperApplication,而不是对其中一个wix使用BootstrapperApplicationRef),或者只需将这个dll放入wix位置的bin中。

最新更新