在wix项目中,您通常会看到类似
的行<Directory Id="TARGETDIR" name="SourceDir">
但为什么name
需要在这里设置?据我所知,name
属性指定了执行安装的机器上生成的文件夹的名称。但是不会创建SourceDir文件夹,为什么需要它呢?
答案 0 :(得分:4)
<强>更新强>: 事实证明这个问题之前已被问过。查看此帖子,了解Wix创建者Rob Mensching的解释:In WiX files, what does Name="SourceDir" refer to?
TARGETDIR 在解析MSI文件的目录表中发挥着特殊作用。具体来说,它构成了源目录树和目标目录树的根。这在MSI文件中由Directory_Parent列中的空值指示:
目录解析后 SourceDir 将指向运行MSI的路径。此外,TARGETDIR将成为大多数内置Windows目录的父文件夹,如ProgramFilesFolder和ProgramMenuFolder,如上图所示。
因此,简而言之,SourceDir被定义为保存正在运行的MSI文件的位置,并且必须知道此位置才能解析分发介质上要安装的每个文件的源位置。
目标位置是文件的完整安装路径: C:\ Program Files \ My App (文件的目的地)。源位置是文件的完整源路径: [SourceDir] Program Files \ My App (文件的来源)。
现在已经很晚了,如果不清楚,请告诉我。