1

LocalAppDataFolder\Microsoft\Windows\Temporary Internet Files\CompanyName\AddOnName\ にいくつかのファイルを生成する Internet Explorer アドオンがあります。

インストールとアンインストールの両方で CompanyName\AddOnName\ フォルダーを削除したいアプリケーション用の WIX インストーラーがあります。

私は以前に 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 テーブルにはリストされていません。」

どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

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[Manufacturer][ProductName] が既に存在するため、マシンごとのインストールの場合は目に見える効果はありません。ユーザーごとのインストールの場合、HKCU\Software[製造元][製品名] が作成されます。

それでも同じエラーで失敗する場合は、HKMU を HKCU に置き換えます。

2 番目の問題については、以下を確認してください。 ディレクトリ xx はユーザー プロファイルにありますが、RemoveFile テーブルにはリストされていません。

于 2012-12-11T11:55:37.137 に答える
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>
于 2012-12-05T09:32:53.037 に答える