代码之家  ›  专栏  ›  技术社区  ›  Dirk Vollmar

如何在Vista中获取应用程序数据文件夹/Word模板文件夹?

  •  2
  • Dirk Vollmar  · 技术社区  · 17 年前

    使用WiX(Windows Installer XML),我创建了一个MSI安装程序,将Word模板安装到用户应用程序数据文件夹中,例如在Windows XP上

    C:\Documents and Settings\<user>\Application Data\Microsoft\Templates
    

    我正在从注册表检索此文件夹的路径:

    <Property Id="APPDIR" Secure="yes">
        <RegistrySearch Id="RegSearch_AppData" 
            Type="directory" 
            Key="Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"    
            Name="AppData" 
            Root="HKCU" />
    </Property>
    
    <CustomAction Id="ActionWordTemplateFolderAssign" 
                  Property="TEMPLATEFOLDER" 
                  Value="[APPDIR]Microsoft\Templates" /> 
    
    <InstallExecuteSequence>
        <Custom Action="ActionWordTemplateFolderAssign" Sequence="1" />
    </InstallExecuteSequence>
    

    但是,有些用户在Windows上安装MSI文件 收到一个错误,因为 财产是 空的

    APPDIR不是检索应用程序数据文件夹的正确方法吗?或者我必须考虑Vista的另一个属性?

    编辑:这只是检索Word模板文件夹的WiX代码的一个简短版本。首先,我实际上是在检查用户是否拥有由策略定义的自定义模板文件夹,还是在HKCU\Software\Microsoft\Office\12.0\Common\General\UserTemplates下。但是,如果没有设置这些选项,则回退将使用由上述代码检索的%APPDATA%\Microsoft\Templates下的默认位置。

    4 回复  |  直到 17 年前
        1
  •  6
  •   Wim Coenen    17 年前

    你应该使用 [AppDataFolder] 相反我在地图上找不到关于“appdir”的任何信息 windows installer property reference .

    问题编辑后:编辑 shell folders key (great blogpost btw) 从何处获取appdir值是获取系统文件夹的一种非常古老且不推荐使用的方法。它只是为了向后兼容,你不应该依赖它。尤其是如果你住在陈雷蒙附近。

    编辑2

    [AppDataFolder]\Microsoft\Templates
    

    这是因为可以在下配置模板文件夹 . 具有讽刺意味的是,如果我们想检测到这一点,我们又回到了搜索注册表:

      <Property Id="USERTEMPLATES">
         <RegistrySearch Id="SearchUserTemplates"
                 Root="HKCU"
                 Key="Software\Microsoft\Office\11.0\Common\General"
                     Name="UserTemplates"
                 Type="raw" />
      </Property>
    

    但是,此注册表值通常不存在,并且您不能在此处指定包含[AppDataFolder]的默认值(我尝试过)。

    相反,我将尝试定义两个组件,一个安装到USERTEMPLATES,另一个安装到[AppData]\Microsoft\Templates。然后,您可以使用条件元素来测试USERTEMPLATES是否存在,并只安装正确的一个。

        2
  •  1
  •   Community Mohan Dere    9 年前
        3
  •  1
  •   saschabeaumont    17 年前

    Divo-在回应您对本地化Vista安装的评论时,问题可能不是太多的本地化Vista(除非我看错了),而是本地化Office。

    Microsoft\Templates 可能成为 Microsoft\Vorlagen

    我特别的问题是如何将宏安装到 [AppDataFolder]Microsft\Word\ STARTUP -仅针对某些语言进行本地化。#$%#最后,我们只是让客户手动移动模板,我们的大多数市场没有问题,但我们注意到意大利和土耳其办事处以及其他几个办事处似乎表现出这种相当恼人的行为。

        4
  •  0
  •   Rob Mensching    17 年前

    在Vista上有一个新的标准文件夹,名为TemplateFolder。我 这就是你想要的。要在WiX中使用它,只需执行以下操作:

    <DirectoryRef Id="TARGETDIR">
       <Directory Id="TemplateFolder" Name="Templates"/>
    </DirectoryRef>
    

    推荐文章