我正在尝试将属性设置为安装目录。以下代码无效
<SetProperty Id="TALKMANSERVICE_MESSAGESCONFIG" Before="InstallInitialize" Value="[INSTALLDIR]\services\MessagesConfig.xml" />
那么我什么时候可以将此属性设置为客户选择的安装目录?
答案 0 :(得分:1)
在CostFinalize之后的InstallExecuteSequence中安排它。这是必需的,因为您使用的值是[INSTALLDIR],它是一个目录表条目(假设它存在于您的MSI中,并且不会像INSTALLLOCATION那样调用其他内容),并且在文件成本核算之前,该条目将不会被解析为属性
另外,你为什么需要这个属性?您可以使用[#filekey]让安装程序告诉您文件的完整路径。请参阅:Formatted
•如果找到[#filekey]形式的子字符串,则将其替换为 文件的完整路径,其值为filekey,用作键入 文件表。 [#filekey]的值保持空白,不会被替换 通过路径直到安装程序运行CostInitialize操作,FileCost action和CostFinalize操作。 [#filekey]的值取决于 文件所属组件的安装状态。如果 组件从源运行,值是到的路径 文件的源位置。如果组件在本地运行,那么 value是之后文件的目标位置的路径 安装。如果组件具有缺席的动作状态,则 组件的安装状态用于确定[#filekey] 值。如果组件的安装状态也不存在或为null, [#filekey]解析为空字符串,否则解析为 值基于组件的已安装状态。欲获得更多信息 关于检查组件的安装状态,请参阅检查 安装功能,组件,文件。