Используйте установщик Wix, чтобы добавить ярлык к подпапке в программах запуска. - PullRequest
9 голосов
/ 05 января 2010

Я пытаюсь добавить ярлык моей программы в существующую папку в ярлыках меню «Пуск». Например 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 и ниже.

Как добавить ярлык в подпапку программы в меню «Пуск»?

1 Ответ

9 голосов
/ 05 января 2010

Если это сообщение исходит от ICE64, то это предупреждение. Предупреждения ICE должны быть поняты и, если приемлемо, проигнорированы. http://msdn.microsoft.com/en-us/library/aa369011(VS.85).aspx имеет это сказать:

ICE64 проверяет, что новые каталоги в профиль пользователя удаляется правильно в роуминге.

Не удалось исправить предупреждение или ошибку сообщается ICE64, как правило, приводит к проблемы в полной очистке компьютер во время удаления. Когда пользователь роуминга, который установил приложение входит в систему компьютера впервые весь профиль копируется на компьютер. На реклама (которая происходит после загрузка профиля роуминга), Установщик проверяет, что каталог уже есть и, следовательно, делает не удаляйте его при удалении. это оставляет каталог на пользователя компьютер постоянно.

Непонятно, почему вы хотите оставить пустой каталог «App» в меню «Пуск». Похоже, решение проблемы ICE является самым простым. Для этого просто добавьте еще один элемент RemoveFolder в свой компонент ProgramMenuDir.

...