2009-01-20 56 views
2

使用WiX(Windows安裝程序XML)我創建了一個MSI安裝程序,它將Word模板安裝到用戶應用程序數據文件夾中,例如,在Windows XP如何在Vista中獲取應用程序數據文件夾/ Word模板文件夾?

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文件Vista的接受,因爲APPDIR錯誤 property is empty

APPDIR不是檢索Application Data文件夾的正確方法嗎?或者我必須考慮Vista上的另一個屬性?

編輯:這只是檢索Word的模板文件夾的WiX代碼的簡短版本。首先,我正在檢查用戶是否具有由策略或HKCU \ Software \ Microsoft \ Office \ 12.0 \ Common \ General \ UserTemplates定義的自定義模板文件夾。但是,如果沒有設置這些回退,則使用上述代碼檢索到的%APPDATA%\ Microsoft \ Templates下的默認位置。

回答

6

您應該改用[AppDataFolder]。在windows installer property reference中找不到關於「appdir」的任何內容。

編輯問題編輯之後:shell folders key (great blogpost btw)從哪裏獲得您的appdir值是一個非常古老且不贊同的方式來獲取系統文件夾。它只是爲了向後兼容,你不應該依賴它。特別是如果你住在Raymond Chen附近。

編輯2:因爲真正的問題真可謂是「如何找到用戶的Word模板文件夾」 ... Word模板文件夾並不總是

[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。然後,您可以使用Condition元素來測試USERTEMPLATES的存在性,並只安裝正確的一個。

+0

對不起,我忽略了APPDIR屬性來自注冊表,我的錯誤。如何在一些(本地化的)Vista安裝上無法使用?我正在嘗試您的建議,因爲聽起來真的很有幫助,並且會通知您。謝謝! – 2009-01-20 23:59:59

+0

我已經編輯了我的答案,以澄清這一點。 – 2009-01-21 00:15:15

+0

感謝您的編輯(以及有趣的評論;)。雷蒙德的帖子總是一個很好的閱讀! – 2009-01-21 00:34:58

1

迪沃 - 針對您對本地化Vista安裝的評論,問題可能出現y不是本地化的Vista(除非我讀錯了),而是本地化的Office。例如

Microsoft\Templates可能變成Microsoft\Vorlagen與德國辦公室。這是一個痛苦的屁股,因爲我還沒有找到一個可靠的文件來源,哪些文件夾名稱已在Office中本地化,哪些沒有。

我的特別問題是與安裝宏以[AppDataFolder]Microsft\Word\STARTUP - 這是本地化的只有一些語言。 #$%#最終我們只是讓客戶手動移動模板,但我們大多數市場沒有問題,但我們注意到意大利和土耳其的辦公室以及其他一些人似乎表現出這種相當惱人的行爲。

0

在Vista上有一個名爲TemplateFolder的新標準文件夾。我認爲這就是你想要的。要在WiX中使用它,只需執行以下操作:

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

然後,您可以引用TemplateFolder目錄,以便您可能需要它。

相關問題