长话短说,这不起作用:
<Icon Id="msiexec.ico" SourceFile="[SystemFolder]msiexec.exe"/>
(错误4系统找不到文件'[SystemFolder] msiexec.exe')
这也不起作用:
<Icon Id="msiexec.ico" SourceFile="$(var.SystemFolder)msiexec.exe"/>
错误3未定义的预处理器变量'$(var.SystemFolder)'。
答案 0 :(得分:2)
如果您将var.SystemFolder
作为参数传递给candle.exe
,则问题中的第二个示例将有效。
<Icon>
元素已映射到Icon MSI table。 在构建时,它会尝试在SourceFile
属性中找到您指定的路径,并将其作为二进制数据流式传输到Icon表的Data
列。这意味着,路径应该在构建时知道。但是在您的第一个示例中并非如此 - SystemFolder
在安装时已解决。