如何在WiX中指定源路径 解决heat生成文件编译找不到资源问题
问题根因
- heat命令默认生成的文件清单中,所有文件的
Source属性都会以SourceDir作为根路径占位符,你在项目属性中配置的包含路径是WiX用于查找.wxs、.wxi等引入文件的配置,和源文件的查找路径完全无关,不会生效。 - 你没有给WiX编译器指定
SourceDir变量对应的实际目录,编译器会默认在当前项目工作目录下查找文件,自然找不到目标路径下的dll。
解决方案
任选其中一种即可:
方案1:heat命令执行时指定路径变量
在原heat命令中添加-var var.FooReleaseDir参数,生成的文件清单会直接使用该变量作为根路径,而非SourceDir,完整命令如下:
heat dir "..\Foo\bin\Release" -cg "SomeGroupName" -ag -template:fragment -var var.FooReleaseDir -out heat.wxs
之后在FooSetup项目的「属性 - 生成 - 定义预处理器变量」中添加配置:FooReleaseDir=..\Foo\bin\Release。
方案2:编译时传入SourceDir的实际映射路径
不需要修改heat命令,直接在FooSetup项目的「属性 - 生成 - 附加参数」中添加以下配置即可:
-dSourceDir="..\Foo\bin\Release"
方案3:在wxs代码中直接定义SourceDir变量
在项目主.wxs文件的<Wix>节点下、<Product>节点外添加如下定义:
<?define SourceDir = "..\Foo\bin\Release" ?>
内容的提问来源于stack exchange,提问作者viraptor
相关产品推荐
相关产品推荐

