Удалить ярлык в WiX, когда Идентификатор продукта *, чтобы разрешить крупные обновления? - PullRequest
6 голосов
/ 23 апреля 2011

Я следовал учебному пособию здесь , чтобы реализовать ярлык удаления в меню Пуск.

Короче говоря, способ создания записи удаления заключается в следующем:

 <Shortcut Id="UninstallProduct"             
           Name="Uninstall My Application"
           Target="[SystemFolder]msiexec.exe"
           Arguments="/x [ProductCode]"
           Description="Uninstalls My Application" />

Основываясь на предложении Роба Меншинга здесь , если приложение достаточно маленькое и вам не нужно обрабатывать небольшие обновления и незначительные обновления (чего я не делаю), вы можете заставить каждое обновление быть серьезное обновление. Это показано здесь . Я использовал предложение Роба, которое было таким:

<Product Id="*" UpgradeCode="PUT-GUID-HERE" Version="$(var.ProductVersion)">
 <Upgrade Id="PUT-GUID-HERE">
    <UpgradeVersion OnlyDetect="yes" Minimum="$(var.ProductVersion)" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" />
    <UpgradeVersion OnlyDetect="no" Maximum="$(var.ProductVersion)" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" />
</Upgrade>

<InstallExecuteSequence>
    <RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>

Теперь мой вопрос: если идентификатор продукта рандомизирован (*), чтобы можно было провести серьезное обновление, есть ли другой способ добавить ярлык удаления в меню «Пуск» или мы должны сделать это через «Установка и удаление программ»? Я бы предпочел создать ярлык в меню «Пуск», так как он проще для пользователя. Очевидно, что так оно и есть сейчас, оно не будет работать, потому что [ProductCode], который используется в аргументах msiexec, будет меняться при каждой установке. Спасибо.

1 Ответ

4 голосов
/ 23 апреля 2011

Вы говорите, что пробовали это, и это не работает? Как это терпит неудачу? Что такое ярлык? Использование Product / @ Id = "*" устанавливает свойство ProductCode, поэтому оно должно работать правильно.

...