3

WiX を使用していて、ユーザーのスタート メニューにショートカットを作成したい

スタート -> [会社名] -> [プログラム名] -> App.exe

私は好きにすることができます

スタート -> [プログラム名] -> App.exe

問題なく:

      <Directory Id="ProgramMenuFolder">
    <Directory Id="ProgramMenuDir" Name="RoverSoft Test">
    </Directory>
  </Directory>      
</Directory>

<DirectoryRef Id="ProgramMenuDir">
  <Component Id="ProgramMenuDirComponent" Guid="{A9858D4C-085A-4132-AD2E-F90A1E5C64A6}">
    <RemoveFolder Id="ProgramMenuDir" On="uninstall" />
    <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="" KeyPath="yes" />
  </Component>
</DirectoryRef>    

しかし、もう 1 レベルのフォルダーを追加すると、エラーが発生します。エラー 1 ICE64: ディレクトリ ProgramMenuSubDir はユーザー プロファイルにありますが、RemoveFile テーブルにはリストされていません。

私が理解しているように、システムのアンインストール後に(この場合はレジストリから)完全にクリアする必要があることを意味します。どうやってするの?

4

2 に答える 2

4

ユーザーのプロファイル内のすべてのフォルダーについて、フォルダーが削除されていることを確認する必要があります。したがって、次のように例を調整できます。

<Directory Id='TARGETDIR' Name='SourceDir'>
  <Directory Id="ProgramMenuFolder">
    <Directory Id="ProgramMenuCompanyDir" Name="Company Name">
       <Directory Id="ProgramMenuProgramDir" Name="ProgramName"/>
    </Directory>
  </Directory>
</Directory>

<Component Id="ProgramMenuCompanyDirComponent" Directory='ProgramMenuCompanyDir'>
  <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Name='InstallVersion'
                 Value="[ProductVersion]" Type="string" />
  <RemoveFolder Id="RemoveProgramMenuCompanyDir" On="uninstall" />
</Component>

<Component Id="ProgramMenuProgramDirComponent" Directory='ProgramMenuProgramDir'>
  <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Name='InstallFolder'
                 Value='[INSTALLFOLDER]' Type="string" />
  <RemoveFolder Id="RemoveProgramMenuProgramDir" On="uninstall" />
</Component>

これにより、すべてのユーザーごとのフォルダーにユーザーごとのキー パス (レジストリ キー) があり、アンインストール中に削除するように正しくマークされていることが保証されます。

于 2013-04-18T21:42:24.943 に答える
0

これが私のコードです。

<Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFiles64Folder">
      <Directory Id="company" Name="company">
        <Directory Id="INSTALLFOLDER" Name="prod" >
         <Directory Id="INCLUDEDIR" Name="include">
         <Directory Id="THIRDPARTYDIR" Name="3rdParty">
         <Directory Id="BIN" Name="bin"></Directory>

         </Directory>  
        </Directory>
       </Directory>
      </Directory>
    </Directory>


 <Directory Id="ProgramMenuFolder" Name="Programs">
    <Directory Id="ProgramMenuDir" Name="prod">
      <Component Id="ProgramMenuDir" Guid="0118D11A-0CA3-4E04-8D27-0B73A279A7FD">
        <RemoveFolder Id='ProgramMenuDir' On='uninstall' />
        <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes' />
      </Component>

    </Directory>
  </Directory>
 <Directory Id="DesktopFolder" Name="Desktop"/>
</Directory>
</Fragment>

ショートカットは次のようになります。

    <DirectoryRef Id="INSTALLFOLDER">
    <Component Id="comp_bin_debug_30" Guid="EB4650EB-75DC-4562-9DC3-8FFDD9B55468">
    <File Id="file_bin_30" Source="..\bin\Debug.amd64\prod.exe" KeyPath="yes" DiskId="1" />
      <Shortcut Id="desktopProd" Directory="DesktopFolder" Name="prod"
      WorkingDirectory='INSTALLFOLDER' Icon="prod_GUI.ico" IconIndex="0" Advertise="yes" />
      <Shortcut Id="startmenuProd" Directory="ProgramMenuDir" Name="prod"
      WorkingDirectory='INSTALLFOLDER' Icon="prod_GUI.ico" IconIndex="0" Advertise="yes" />      
     </Component>
   </DirectoryRef>
于 2013-04-18T20:32:30.137 に答える