2016-05-12 25 views
1

WiXを使用するアプリケーションのスタートメニューのショートカットを作成しようとしていますが、ショートカットディレクトリの親ディレクトリがRemoveFileテーブルにないというIce64エラーが表示されています。ショートカットの親ディレクトリのWiX Ice64エラー

他のアプリケーションが他の子にショートカットを持つ可能性があるため、アンインストール時にこの親フォルダ(組織フォルダ)を削除したくありません。

<Feature Id="ProductFeature" Title="MyApplication" Level="1"> 
    <ComponentGroupRef Id="Components" /> 
    <ComponentRef Id="ProfilesShortcut"/> 
</Feature> 

<Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
    <Directory Id="OrgDir" Name="OrganisationName"> 
     <Directory Id="AppDir" Name="MyApplication" /> 
    </Directory> 
    </Directory> 
    <Directory Id="ProgramMenuFolder"> 
    <Directory Id="ProgFilesOrgDir" Name="OrganisationName"> 
     <Directory Id="ProgFilesAppDir" Name="MyApplication" /> 
    </Directory> 
    </Directory> 
    </Directory> 
</Fragment> 

<Fragment> 
<DirectoryRef Id="ProgFilesAppDir"> 
    <Component Id="ProfilesShortcut" Guid="*"> 
    <Shortcut Id="ApplicationStartMenuShortcut" 
       Name="MyApplication" 
       Description="My Application" 
       Target="[#MyApplication.exe]" 
         WorkingDirectory="AppDir"/> 
    <RemoveFolder Id="ProgFilesAppDir" On="uninstall"/> 
    <RegistryValue Root="HKCU" Key="Software\Organisation\MyApplication" Name="installed" Type="integer" Value="1" KeyPath="yes"/> 
    </Component> 
</DirectoryRef> 
</Fragment> 

答えて

2

は、あなたのショートカットのコンポーネントに削除ファイルの要素を追加する自由を感じるよう

私のコードが見えます。

インストールまたは削除のために親コンポーネントが選択されている場合は、空のフォルダを削除します。

RemoveFolder要素は、空のフォルダのみを削除するため、インストールされているスイートの一部でない場合、他の製品にはファイル/フォルダが置かれるため、親フォルダはそのまま残ります。あなたの製品がインストールされている唯一のもの(フォルダを削除する必要があります)またはスイートから最後にアンインストールするもの(フォルダを削除する必要があります)のシナリオを考えてみましょう。この2つのケースでは、フォルダは削除されます。 RemoveFolder要素が定義される順序は重要なので、ProgramFilesOrgFolderを置く前にProgFilesAppDirの要素を削除する前に要素を削除することをテストして、要素の1つが失敗したかどうかを確認します。

また、ICE64を抑制することもできますが、すべての製品をアンインストールした後はフォルダを残しておくことができます。本当に大したことではありませんが、一部のユーザーにとっては迷惑になるかもしれません。

関連する問題