【问题标题】:Install to the common templates folder with wix使用 wix 安装到公共模板文件夹
【发布时间】:2021-08-19 23:41:43
【问题描述】:

在 Windows 安装程序提供的System Folder Properties 列表中,我看到了一个TemplateFolder,它是“当前用户模板文件夹的完整路径”。所以我可以在 wix 中使用TemplateFolder 作为目录 ID 来安装用户特定的模板。

但是,我需要安装到 common 模板文件夹,即 Windows API 中称为CSIDL_COMMON_TEMPLATES(也称为FOLDERID_CommonTemplates)的文件夹。 Windows 安装程序似乎没有为此提供系统文件夹属性。

如何使用 wix 将文件安装到通用模板文件夹?

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    documentation 在“TemplateFolder”-ID 上告诉我们它取决于安装上下文是否是“所有用户的 Templates 文件夹的完整路径”(每台机器)或“当前用户的模板文件夹的完整路径”(每个用户)。

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    • @AdrianCidAlmaguer:它确实包括基本部分。
    • @NathanTuggy 感谢您提到它确实包含基本部分。对我来说,这可以在 WiX 环境中正常工作。
    • TemplateFolder 属性本身的文档声称 ALLUSERS 属性仅在 Windows 2000 上具有此效果,但也许我不应该相信该信息。
    • @WimCoenen 正确,我也读过这篇文章,对此有些恼火。我在那里添加了评论,因为文档肯定不正确。
    【解决方案2】:

    我最终定义了一个像这样的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。我仍然想找到更好的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 2012-02-26
      相关资源
      最近更新 更多