Как создать многоуровневую подпапку в использовании Меню "Пуск" WiX

Это очень похоже на присвоение класса, поэтому я опишу ошибки, а не просто представлю рабочий код.

Ваша первая ошибка вообще использует float: типы с плавающей запятой (half, float, double и т. Д.) Предназначены для (аппроксимации) действительных чисел. Подходящим выбором здесь является char, базовый «символьный» тип, но любой целочисленный тип должен работать, поскольку char является также (обычно) наименьшим целочисленным типом.


Ваша вторая ошибка пытается использовать имена переменных (правильно: идентификаторы) в качестве символьных литералов :

float P; // uninitialized floating point object
'P' // literal character "P"

Ваш третий error, логическая ошибка, делает все сравнения в одном и том же порядке с одинаковыми переменными :

// edited to correct previous error
if ((p1 == 'P') && (p2 == 'R')) // checks if p1 wins
 cout<<"Paper covers rock.";
if ((p1 == 'p') && (p2 == 'r')) // checks if p1 wins
 cout<<"Paper covers rock.";
if ((p1 == 'P') && (p2 == 'r')) // checks if p1 wins
 cout<<"Paper covers rock.";
if ((p1 == 'p') && (p2 == 'R')) // checks if p1 wins - shouldn't we check for p2 winning somewhere?
 cout<<"Paper covers rock.";

Ваша четвертая ошибка, также логическая ошибка, основанная на назначении ограничения, не печатает, какой игрок выигрывает. Как упоминалось ранее, ваш код в настоящее время может определять только выигрыш игрока 1 или ничью.


Ваша пятая дискуссионная «ошибка» не печатает перенос строки (добавьте \n к строке или << std::endl к std::cout) перед выходом.

13
задан Peter Mortensen 12 November 2012 в 05:46
поделиться

1 ответ

То, что делает вещи интересными, - то, что MSI требует значение реестра, которое будет создано как способ обнаружить, был ли компонент установлен. Если мы предпочитаем создавать только одну такую стоимость реестра для всех ярлыков, то мы должны будем поместить все наши ярлыки в единственный компонент.

К счастью, возможно создать компоненты, которые охватывают несколько целевых каталогов путем использования атрибута Каталога на элементе Ярлыка.

   <!-- shortcuts to applications in the start menu -->
   <DirectoryRef Id="ProgramMenuProductFolder">
      <Component Id="ProgramMenuShortcutsComponent" Guid="PUT-GUID-HERE">
         <!-- create folders -->
         <CreateFolder Directory="ProgramMenuVendorFolder" />
         <CreateFolder Directory="ProgramMenuProductFolder" />
         <CreateFolder Directory="ProgramMenuSubFolder" />
         <!-- remove folder -->
         <RemoveFolder Id="RemoveProgramMenuVendorFolder"
            Directory="ProgramMenuVendorFolder"
            On="uninstall" />
         <RemoveFolder Id="RemoveProgramMenuProductFolder"
            Directory="ProgramMenuProductFolder"
            On="uninstall" />
         <RemoveFolder Id="RemoveProgramMenuProductSubFolder"
            Directory="ProgramMenuProductSubFolder"
            On="uninstall" />
         <!-- main shortcut -->
         <Shortcut
            Id="MainShortcut"
            Name="My Product"
            Target="[SomeInstalledFolder]app1.exe" />
         <!-- shortcut in subfolder -->
         <Shortcut
            Id="SubFolderShortcut"             
            Name="mySubFolderShortcut"
            Target="[SomeInstalledFolder]app2.exe"
            Directory="ProgramMenuProductSubFolder" />
         <!--
            RegistryValue whichs serves as KeyPath
         -->
         <RegistryValue
            Root="HKCU"
            Key="Software\MyVendor\MyProduct"
            Name="InstalledStartMenuShortcuts"
            Type="integer"
            Value="1" />
      </Component>
   </DirectoryRef>

   <!-- shortcut directories -->
   <Directory Id="ProgramMenuFolder">
      <Directory Id="ProgramMenuVendorFolder" Name="MyVendor">
         <Directory Id="ProgramMenuProductFolder" Name="MyProduct">
            <Directory Id="ProgramMenuProductSubFolder" Name="MySubFolder" />
         </Directory>
      </Directory>
   </Directory>
22
ответ дан 1 December 2019 в 22:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: