2012-12-04 184 views
1

刪除的文件,我有一個Internet Explorer的插件,可以生成LocalAppDataFolder \微軟\的Windows \ Temporary Internet Files文件\公司名稱某些文件\ AddOnName \WIX安裝程序中添加和LocalAppDataFolder

我對應用WIX安裝我希望在安裝和卸載時刪除CompanyName \ AddOnName \文件夾。

我從來沒有使用過WIX,而我更像是一個MacOS傢伙,所以這些東西對我來說都有點陌生。這裏是什麼,我有一個部分,現在(我的Product.wxs文件):

<Feature Id="ProductFeature" Title="Company IE Add-On" Level="1" ConfigurableDirectory="INSTALLFOLDER"> 
    <ComponentRef Id="INSTALLFOLDER" /> 
    <ComponentGroupRef Id="ProductComponents" /> 
    <ComponentRef Id="dataDirectory"/> 
</Feature> 

<Fragment> 
<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
     <Directory Id="INSTALLFOLDER" Name="Company IE Add-On" > 
      <Component Id="INSTALLFOLDER" Guid="THERE IS A GUID HERE"> 
      <RemoveFolder On="both" Id="INSTALLFOLDER"/> 
      <RegistryValue Root="HKLM" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="Company IE Add-On" /> 
     </Component> 
    </Directory> 
    </Directory> 
    <Directory Id="LocalAppDataFolder"> 
    <Directory Id="Microsoft"> 
     <Directory Id="Windows"> 
     <Directory Id="TempInetFiles" Name="Temporary Internet Files"> 
      <Directory Id="CompanyName"> 
      <Directory Id="AddOnName"> 
       <Component Id="dataDirectory" Guid="E5938D44-5315-43D4-94EC-313F6CDB290B" NeverOverwrite="no" Permanent="no"> 
       <RemoveFolder Id="AddOnName" On="both"/> 
       </Component> 
      </Directory> 
      </Directory> 
     </Directory> 
     </Directory> 
    </Directory> 
    </Directory> 
</Directory> 
</Fragment> 

但是,這是給我像「組件DataDirectory目錄安裝到用戶的個人資料錯誤,必須使用註冊表項HKCU下的。它的KeyPath,而不是一個文件。「

而「目錄CompanyName在用戶配置文件中,但未在RemoveFile表中列出。」

任何幫助將不勝感激。 謝謝。

回答

0

WiX的要求,只要創建一個用戶特定的組件,你總是使用HKCU註冊表項。在這種情況下,dataDirectory將始終安裝在當前用戶的配置文件中。添加組件內的HKCU或HKMU註冊表元素,如:

<Component Id="dataDirectory" Guid="E5938D44-5315-43D4-94EC-313F6CDB290B" NeverOverwrite="no" Permanent="no"> 
    <Registry Root='HKMU' Key='Software\[Manufacturer]\[ProductName]' KeyPath='yes'/> 
    <RemoveFolder Id="AddOnName" On="both"/> 
</Component> 

這不會有一個按機器安裝的情況下,任何明顯的效果,你已經有HKLM \ SOFTWARE [生產企業] [產品名稱]。在每個用戶安裝的情況下,它將創建HKCU \ Software [Manufacturer] [ProductName]。

用HKCU替換HKMU如果它仍然失敗並出現相同的錯誤。

對於第二個問題,請上網: Directory xx is in the user profile but is not listed in the RemoveFile table.

0

我做同樣的事情,這代碼工作對我來說:

<!--Setting up the shortcuts for the product--> 
    <Directory Id="ProgramMenuFolder" Name="Programs"> 
    <Directory Id="ProgramMenuDir" Name="$(var.ShortcutName)"> 
     <Directory Id="ProgramMenuSubFolder" Name="LOGGERS"> 
     </Directory> 
    </Directory> 
    </Directory> 
    </Directory> 

<Component Id='LoggersShortcut' Guid='2A6D411E-5CE9-4F38-8F25-361CBFCABB5A' Directory='ProgramMenuSubFolder'> 
    <CreateFolder Directory="ProgramMenuSubFolder" /> 
    <RemoveFolder Id='ProgramMenuSubFolder' On='uninstall' Directory='ProgramMenuSubFolder'/> 
    <RegistryValue Root='HKCU' Key='Software\ShortcutProperty\[PRODUCTNAME]' Type='string' Value='1' KeyPath='yes' /> 
    </Component>