9

プログラムのショートカットをスタート メニューのショートカットの既存のフォルダーに追加しようとしています。例えばAll Programs -> AppNameFolder -> AppNameVersionFolder -> AppShortcut

これを実現するために、次の行を追加しました。

          <Directory Id="ProgramMenuFolderApp" Name="App">
                <Directory Id="ProgramMenuDir" Name="APP 6.3.0">

私の .wxs ファイルの次のコードに:

    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder" Name="Program Files">
            <Directory Id="CompanyName" Name="CompanyName">
                <Directory Id="App" Name="App">
                    <Directory Id="INSTALLDIR" Name="App 6.3.0">
                        <Component Id="MainExecutable" Guid="23FFE6FD-2BEA-4946-9875-8DBEEA5AAF55">
                            <File Id="AppEXE" Name="App.exe" Source="App.exe" KeyPath="yes">
                                <Shortcut Id="startmenu" Directory="ProgramMenuDir" Name="App 6.3.0" WorkingDirectory='INSTALLDIR' Icon="App.exe" IconIndex="0" Advertise="yes" />
                                <Shortcut Id="desktopApp" Directory="DesktopFolder" Name="App 6.3.0" WorkingDirectory='INSTALLDIR' Icon="App.exe" IconIndex="0" Advertise="yes" />
                            </File>
                        </Component>
                    </Directory>
                </Directory>
            </Directory>
        </Directory>
        <Directory Id="ProgramMenuFolder" Name="Programs">
            <Directory Id="ProgramMenuFolderApp" Name="App">
                <Directory Id="ProgramMenuDir" Name="App6.3.0">
                    <Component Id="ProgramMenuDir" Guid="BF266F76-192A-493E-B5C7-C54660E61D7D">
                        <RemoveFolder Id="ProgramMenuDir" On="uninstall" />
                        <RegistryValue Root="HKCU" Key="Software\CompanyName\App6.3.0" Type="string" Value="" KeyPath="yes" />
                    </Component>
                </Directory>
            </Directory>            
        </Directory>
        <Directory Id="DesktopFolder" Name="Desktop" />
    </Directory>

ビルドしようとすると、次のエラーが発生します。

The directory ProgramMenuFolderApp is in the user profile but is not listed in the RemoveFile table.

ただし、アンインストール時に上位レベルのフォルダーを削除したくありません。App 6.3.0 フォルダー以下のみを削除したいのです。

スタート メニューのプログラム サブフォルダにショートカットを追加するにはどうすればよいですか?

4

1 に答える 1

9

そのメッセージが ICE64 からのものである場合、それは警告です。ICE の警告を理解し、許容できる場合は無視する必要があります。http://msdn.microsoft.com/en-us/library/aa369011(VS.85).aspxには次のように書かれています。

ICE64 は、ユーザー プロファイル内の新しいディレクトリがローミング シナリオで正しく削除されていることを確認します。

ICE64 によって報告された警告またはエラーを修正しないと、通常、アンインストール中にコンピュータを完全にクリーンアップする際に問題が発生します。アプリケーションをインストールしたローミング ユーザーが初めてコンピュータにログオンすると、すべてのプロファイルがコンピュータにコピーされます。アドバタイズ (ローミング プロファイルのダウンロード後に行われます) では、インストーラーはディレクトリが既に存在することを確認するため、アンインストール時にディレクトリを削除しません。これにより、ディレクトリはユーザーのコンピューターに永続的に残ります。

スタートメニューに空の「アプリ」ディレクトリを残したい理由は明らかではありません。ICEの問題に対処するのが最も簡単なようです。これを行うには、別の RemoveFolder 要素を ProgramMenuDir コンポーネントに追加するだけです。

于 2010-01-05T06:46:52.133 に答える