【发布时间】:2013-03-08 06:13:11
【问题描述】:
请参阅以下声明;暂时我在 MSI 的安装项目中有硬编码的源和目标文件夹(这个文件夹是在安装过程中形成的)。注意:下面的文件路径是 MSI 软件包安装目标所在的路径,而不是源位置。如何通过隐藏 [INSTALLLOCATION]\App_Config\
等硬编码值来设置目标或源属性值的问题到目前为止,我正在通过命令行传递 INSTALLLOCATION (E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb) 并希望将目标文件夹值设置为 [INSTALLLOCATION]\App_Config\ 但不确定如何实现通过我尝试但未能使其工作的属性设置或自定义操作。
下面是需要复制的文件组件的片段(来自 heat.exe)。
<Component Id="cmp209B0DBB82F9FF15193D29F0BD337B7F" Directory="dirB0A921E55A598C65B18B4E47885629C3" Guid="{3B140259-FCC7-4D2E-8629-CBB879BBA46C}">
<File Id="filBC5CC5B8DCC504F6DC75A7B2673E7D0D" KeyPath="yes" Source="C:\Workspaces\Chatra\Website\SCBUDirect.B2CWeb\App_Config\basic.log4net.dev" />
</Component>
这是我在 product.wxs 中的部分代码
<Fragment>
<Property Id="SourceFilesFolder" Value="E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb\App_Config\basic.log4net.dev" />
<Property Id="DestFilesFolder" Value="E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb\App_Config\" />
<ComponentGroup Id="CopyFiles">
<ComponentRef Id="CMP_LOG4TXT" />
</ComponentGroup>
<Component Id="CMP_LOG4TXT" Guid="341BD660-7249-42DD-9744-DBEF0776AD52" Directory="INSTALLLOCATION" KeyPath="yes">
<CopyFile Id="Copy_LOG4TXT"
SourceProperty="SourceFilesFolder"
DestinationProperty="DestFilesFolder"
DestinationName="basic.log4net" />
</Component>
</Fragment>
【问题讨论】:
-
我将首先使用
msiexec /i yourProduct.msi /lvoicewarmupx log.txt运行 msi,然后在生成的 log.txt 中搜索组件的 Id 和 Guid,看看它是否为您提供了任何有用的信息。 -
CopyFile在InstallExecuteSequence之前不会复制文件 -
您好,现在我可以找出问题所在,我没有在功能中指定复制组件。但现在我不想硬编码源和目的地。有没有可能做到这一点。截至目前,我正在通过命令行传递 INSTALLLOCATION (E:\Websites\SCBUDirect\Website\SCBUDirect.B2CWeb) 并希望将目标文件夹值设置为 [INSTALLLOCATION]\App_Config\ 但不确定如何通过属性设置来实现或我尝试过但未能成功的自定义操作。
-
Natalie Carr,您能否提供更多有关 InstallExcuteSequence 的详细信息?以及此操作的解决方案如何。而且我也修改了问题以明确它
-
使用
SetProperty设置目标属性。
标签: xml installation wix