2016-09-08 17 views
1

在WiX的项目,您通常会看到这样为什么TARGETDIR目录需要一个名称?

<Directory Id="TARGETDIR" name="SourceDir"> 

但为何name需要在此处设置一条线吗?据我所知,name属性指定了正在安装的计算机上生成的文件夹的名称。但是没有SourceDir文件夹会被创建,所以它为什么需要?

回答

4

TARGETDIR在解析MSI文件的目录表中发挥着特殊作用。具体来说,它构成了源和目标目录树的根。这是在MSI文件由Directory_Parent列中的空值表示:

enter image description here

目录分辨率SourceDir后,将指向其中MSI从运行的路径。此外,TARGETDIR将成为大多数内置Windows目录(如ProgramFilesFolder和ProgramMenuFolder)的父文件夹,如上图所示。

因此,简而言之SourceDir被定义为保存正在运行的MSI文件的位置,并且此位置有必要知道为了解析每个要安装的文件的分发介质上的源位置。

目标位置是文件的完整安装路径:C:\ Program Files \ My App(文件正在发送)。源位置是文件的完整源路径:[SourceDir] Program Files \ My App(文件来自此处)。

现在已经晚了,请告诉我,如果不清楚。

UPDATE: 原来这个问题已经被问过。从Wix的创作者Rob Mensching那里查看这篇文章的解释:In WiX files, what does Name="SourceDir" refer to?

相关问题