Wix создать файл без вывода сообщений

Моя идея сделать файл удаления с установочным файлом.msi. Я прочитал некоторую информацию о создании ярлыка удаления здесь: http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/create_uninstall_shortcut.html, но я не могу найти информацию о файле make uninstall после сборки msi, возможно, кому известно, что это возможно? и если возможно, как я могу это сделать? или, может быть, это можно сделать с помощью сценария cmd? Просто напишите скрипт для автоматического удаления моей программы из машины. Мой код:

    <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"><?define WpfApp1_TargetDir=$(var.WpfApp1.TargetDir)?>
    <Product Id="*" Name="SetupProject2" Language="1033" Version="1.0.0.0" Manufacturer="Andrejka" UpgradeCode="PUT-GUID-HERE">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

    <Property Id="WIXUI_INSTALLDIR" Value="TESTFILEPRODUCTDIR" />
    <Property Id="WixShellExecTarget" Value="[#WpfApp1.exe]" />
    <CustomAction Id="LaunchApplication" BinaryKey="WixCA"  DllEntry="WixShellExec"   Impersonate="yes" />
    <Property Id="LAUNCH_APP_ON_EXIT" Value="1" />

   <InstallExecuteSequence>
     <Custom Action='LaunchApplication' After='InstallFiles'/>
  </InstallExecuteSequence>   
    <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1" />

        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate EmbedCab="yes"/>
        <Feature Id="ProductFeature" Title="SetupProject2" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="TESTFILEPRODUCTDIR" Name="SetupProject2">
             <Directory Id="ProgramFilesFolder">
                 <Directory Id="INSTALLFOLDER" Name="SetupProject2" />      
       </Directory>
            </Directory>
        </Directory>
    </Fragment>

    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
            <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
            <!-- <Component Id="ProductComponent"> -->
                <!-- TODO: Insert files, registry keys, and other resources here. -->
            <!-- </Component> -->

            <Component Id="WpfApp1.exe" Guid="*">
              <File Id="WpfApp1.exe" Name="WpfApp1.exe" Source="$(var.WpfApp1_TargetDir)WpfApp1.exe" />     
            </Component>
            <Component Id="WpfApp1.exe.config" Guid="*">
              <File Id="WpfApp1.exe.config" Name="WpfApp1.exe.config" Source="$(var.WpfApp1_TargetDir)WpfApp1.exe.config" />
            </Component>
            <Component Id="aws_sdk_net_core_support.dll" Guid="*">
              <File Id="aws_sdk_net_core_support.dll" Name="aws-sdk-net-core-support.dll" Source="$(var.WpfApp1_TargetDir)aws-sdk-net-core-support.dll" />
            </Component>
            <Component Id="AWSSDK.Core.dll" Guid="*">
              <File Id="AWSSDK.Core.dll" Name="AWSSDK.Core.dll" Source="$(var.WpfApp1_TargetDir)AWSSDK.Core.dll" />
            </Component>
            <Component Id="AWSSDK.SimpleNotificationService.dll" Guid="*">
              <File Id="AWSSDK.SimpleNotificationService.dll" Name="AWSSDK.SimpleNotificationService.dll" Source="$(var.WpfApp1_TargetDir)AWSSDK.SimpleNotificationService.dll" />
            </Component>
            <Component Id="MimeSharp.dll" Guid="*">
              <File Id="MimeSharp.dll" Name="MimeSharp.dll" Source="$(var.WpfApp1_TargetDir)MimeSharp.dll" />
            </Component>
        </ComponentGroup>
    </Fragment>
</Wix>

1 ответ

Решение

Как правило, вы не должны помещать ярлыки удаления в меню "Пуск", на самом деле это нарушение требований к логотипу Microsoft для приложений Windows. Скорее вы должны позволить людям удалить ваш продукт обычным способом через апплет добавления / удаления программ.

ОБНОВЛЕНИЕ: я нашел этот ответ с дополнительной информацией по этой теме: Ярлыки с именем "Удалить <Имя программы>" не отображаются в Windows 8/8.1/10

Кроме того, чтобы это было понятно, удаление - это встроенная функция файлов MSI - она ​​всегда автоматически доступна, если она не заблокирована (например, некоторые приложения скрываются от отображения в программах добавления / удаления). В источниках WiX нет ничего лишнего, чтобы правильно удалить поддержку. Просто следуйте инструкциям установщика Windows, и это "бесплатно".

Если вы запрашиваете способ создания пакетного файла для удаления, то вы можете найти множество способов удаления файла MSI в этом "справочнике по удалению": удаление файла MSI из командной строки без использования msiexec.

Короче говоря, просто запустите приведенную ниже командную строку, чтобы удалить MSI, если у вас есть код продукта MSI (вы можете узнать код продукта, выполнив запрос к вашей системе, как описано здесь: Как я могу найти GUID продукта установленной установки MSI? - вы может потребоваться поискать его, поскольку вы автоматически генерируете код продукта):

msiexec.exe /x {your-product-guid}

или просто удалите, ссылаясь на ваш оригинальный установочный файл MSI, как это:

msiexec.exe /x "c:\filename.msi

См. Связанный ответ выше (ссылка на удаление) для получения дополнительной информации об этом.

Другие вопросы по тегам