我正在尝试更改WixStandardBootstrapperApplication.cpp,并根据this链接的建议生成一个动态链接库。我已经下载了wix310-debug源代码,并且正在修改wix310-debug\src\ext\BalExtension\wixstdba\ location下的文件。在这个位置下有一个wixstdba.vcxproj文件,我正尝试使用Visual Studio2012打开它。每当我尝试这样做时,我都会得到错误:
Unable to read the project file "wixstdba.vcxproj". The imported project "C:\tools\WixBuild.props" was not found.我不确定我应该做些什么来纠正这个问题。此外,根据引用的链接,我认为我正在更新正确的文件,但如果不是这样,请让我知道。这方面的任何帮助都是很好的。提前谢谢。
发布于 2016-05-05 00:40:27
在你的vcxproj中有这样一行:
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), wix.proj))\tools\WixBuild.targets" />调试源并不是wix的真正源码。它包含了所有的wix源文件,但它不是真正可构建的。这个压缩包包含所有已构建的pdbs,并且仅用于调试。
您希望从wixtoolset's github下载wix源代码,以便构建wixstdba。但是,这是目前的3.10.3版本,可能会有一些版本特定的更改,但我没有看到任何问题,使用这里针对wix 3.10.2构建的dll,因为引擎和引导程序应用程序接口应该保持不变。
但是,您应该只需要WixStdBA项目就可以构建所有这些内容。您必须复制wixstdba文件夹。编辑vcxproj并删除上面提到的导入行(它应该在底部附近)。
现在,将此项目添加到visual studio中的新解决方案或安装程序解决方案中。我们需要添加add、include和library目录。所有这些目录都将位于您的wix安装位置(默认为C:\Program Files (x86)\WiX ToolsetV3.10)中的Properties -> C/C++ -> General -> additional include目录添加您的wix SDK include路径。如果你使用的是visual studio 2013,你可以使用完整路径,也可以使用"$(WIX)\SDK\vs2013\inc“。$( wix )应引用WIX环境变量,该变量指向安装wix时添加的安装目录。如果您要在安装了wix的构建系统上构建,这应该是更好的选择,因为不同机器的位置可能不同。
现在,对于附加库目录,我们转到Properties -> Linker -> -> Additional library目录,然后添加正确的库路径。如果你使用的是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中。
https://stackoverflow.com/questions/37023191
复制相似问题