WIX Добавление ярлыка рабочего стола для текущего пользователя на основе условия - PullRequest
0 голосов
/ 03 мая 2020

Я потратил слишком много времени на это. Время обратиться за помощью. У меня есть пакет установщика Visual Studio, который я преобразовал в WIX с помощью dark.exe. В установщике VS у меня есть диалоговое окно с двумя флажками, чтобы добавить ярлык на рабочем столе через файл .LNK. Один для добавления для всех пользователей, один для добавления для текущего пользователя. Это прекрасно работает, пока я не перейду на WIX.

Сначала я получаю эту ошибку:

Компонент xxx устанавливается в профиль пользователя. Он должен использовать ключ реестра в HKCU в качестве KeyPath, а не файл.

Я ищу в Google, он говорит мне, что мне нужно значение реестра, поэтому у меня теперь есть:

<Directory Id="DesktopFolder" ShortSourceName="USER'S~1" SourceName="User's Desktop">
   <Component Id="C__7DDB9BC0582F4D92BBB635D8264B2521" Guid="{5EFFCB50-32D4-5286-E8DB-84FCEC3F8050}" Win64="yes">
     <RegistryValue 
       Root="HKCU" 
       Key="SOFTWARE\MyProduct"
       Name="InstallFolder"
       Value="%UserProfile%\Desktop"
       Type="string"
       KeyPath="yes" />
   <Condition>(CHECKBOXA2=1) AND (CHECKBOXA1&lt;&gt;1)</Condition>
     <File Id="_7DDB9BC0582F4D92BBB635D8264B2521" Name="MyLink.lnk" ShortName="MyLink.LNK" KeyPath="no" DiskId="1" Source="C:\PathToMyLink.lnk" />
 </Component>
</Directory>

WIX собирается просто отлично, установщик работает просто отлично, однако я НИКОГДА не получаю ярлык на рабочем столе для профиля пользователя. Ярлык всех пользователей работает очень хорошо, когда я отмечаю этот флажок. Однако ничего из того, что я пробовал, не получит файл ярлыка профиля пользователя в папке% UserProfile% \ Desktop. Я не получаю ошибок даже при использовании журнала отладки в MSI.

Любая помощь очень ценится и спасибо заранее.

Я не упомянул, что у меня также есть wix bootstrap для обрабатывать установку дополнительных элементов как более одного MSI за один раз. Я использовал источник MSI из этого преобразования WIX в bootstrap. Я решил указать оригинальный VS Installer MSI для bootstrap, который работает. Я могу получить иконку пользователя на рабочем столе, делая это. Однако я обновил это преобразование, чтобы установить сертификат с использованием расширения IIS, которое я не могу заставить работать в bootstrap. Итак, кажется, что преобразование с использованием dark что-то упускает.

Вот некоторый соответствующий текст из подробного журнала. CHECKBOXA2 - это поле для проверки профиля пользователя. Не уверен, почему он удаляется? ПРОВЕРКА 3 и 4 скрыты и не используются.

MSI (c) (54:34) [09: 30: 31: 417]: Выполнение действия: CustomCheckA_SetProperty_CHECKBOX1 MSI (c) (54: 34) [09: 30: 31: 417]: примечание: 1: 2205 2: 3: действие ActionText начинается 9:30:31: CustomCheckA_SetProperty_CHECKBOX1. Действие завершено 9:30:31: CustomCheckA_SetProperty_CHECKBOX1. Возвращаемое значение 1. MSI (c) (54:34) [09: 30: 31: 417]: Выполнение действия: CustomCheckA_SetProperty_CHECKBOX2 MSI (c) (54:34) [09: 30: 31: 417]: Примечание: 1: 2205 2: 3: ActionText Начало действия 9:30:31: CustomCheckA_SetProperty_CHECKBOX2. MSI (c) (54:34) [09: 30: 31: 417]: ИЗМЕНЕНИЕ НЕДВИЖИМОСТИ: Удаление свойства CHECKBOXA2. Текущее значение - «1». Действие завершено 9:30:31: CustomCheckA_SetProperty_CHECKBOX2. Возвращаемое значение 1. MSI (c) (54:34) [09: 30: 31: 417]: Выполнение действия: CustomCheckA_SetProperty_CHECKBOX3 MSI (c) (54:34) [09: 30: 31: 417]: Примечание: 1: 2205 2: 3: действие ActionText начинается 9:30:31: CustomCheckA_SetProperty_CHECKBOX3. MSI (c) (54:34) [09: 30: 31: 417]: ИЗМЕНЕНИЕ НЕДВИЖИМОСТИ: Удаление свойства CHECKBOXA3. Текущее значение - «1». Действие завершено 9:30:31: CustomCheckA_SetProperty_CHECKBOX3. Возвращаемое значение 1. MSI (c) (54:34) [09: 30: 31: 417]: Выполнение действия: CustomCheckA_SetProperty_CHECKBOX4 MSI (c) (54:34) [09: 30: 31: 417]: Примечание: 1: 2205 2: 3: ActionText Начало действия 9:30:31: CustomCheckA_SetProperty_CHECKBOX4. MSI (c) (54:34) [09: 30: 31: 417]: ИЗМЕНЕНИЕ НЕДВИЖИМОСТИ: Удаление свойства CHECKBOXA4. Текущее значение - «1». Действие завершено 9:30:31: CustomCheckA_SetProperty_CHECKBOX4. Возвращаемое значение 1. MSI (c) (54:34) [09: 30: 31: 417]: Выполнение действия: DIRCA_TARGETDIR MSI (c) (54:34) [09: 30: 31: 417]: Примечание: 1: 2205 2: 3: ActionText

Другая проблема заключается в том, что указанная выше запись реестра никогда не создается. Может ли это быть весь вопрос здесь?

ОБНОВЛЕНИЕ: достигнут определенный прогресс. Если я изменю WIX XML, чтобы флажок User Desktop был установлен по умолчанию, тогда он установит ярлык на рабочем столе пользователя и создаст запись реестра. Тем не менее, он не будет удален из программ и функций. Я получаю код ошибки 26351. Я могу удалить его, используя строку удаления из реестра, хотя. Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...