在Windows安装程序提供的System Folder Properties列表中,我看到一个TemplateFolder
,它是“当前用户的Template文件夹的完整路径”。所以我可以使用TemplateFolder
作为wix中的目录ID来安装用户特定的模板。
但是,我需要安装到公共模板文件夹,即在Windows API中称为CSIDL_COMMON_TEMPLATES
(也是FOLDERID_CommonTemplates
)的文件夹。 Windows安装程序似乎没有为此提供系统文件夹属性。
如何使用wix将文件安装到公共模板文件夹?
MSDN documentation告诉我们“TemplateFolder”-ID它取决于安装上下文是否是“所有用户的Templates文件夹的完整路径”(每台机器)或“当前模板文件夹的完整路径”用户“(每用户)。
我最终定义了像这样的COMMONTEMPLATEFOLDER
:
<DirectoryRef Id='TARGETDIR'>
<Directory Id='COMMONTEMPLATEFOLDER' Name='Templates' />
</DirectoryRef>
<Property Id="COMMONTEMPLATEFOLDER">
<RegistrySearch Id="searchCommonTemplateFolder"
Root="HKLM"
Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
Name="Common Templates"
Type="raw" />
</Property>
这似乎工作正常,但不幸的是它依赖于undocumented registry entries。我仍然想找到一个更好的方法。