【问题标题】:Desktop icon wont get removed after uninstall - Wix卸载后桌面图标不会被删除 - Wix
【发布时间】:2017-08-15 13:19:18
【问题描述】:

我有这个 Wix XML 脚本来安装我的服务和桌面上的快捷方式图标。安装工作完美,卸载程序也可以工作,但它会在桌面上留下快捷方式图标。我不知道出了什么问题,我使用了 Wix 文档中指定的 On="uninstall" 参数,

这里是 XML:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
 <Product Id="*" Name="Administration Service" Language="1033" Version="1.3.0.0" Manufacturer="company" UpgradeCode="PUT-GUID-HERE>
  <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Platform="x64"/>

  <Icon Id="shortcut_s.url" SourceFile="./../ReviewerBootstrapper/reviewer.ico"/>
  <Property Id="ARPPRODUCTION" Value="shortcut_s.url"/>
  <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <Media Id="1" Cabinet="cab1.cab" EmbedCab="yes" />

  <Feature Id="ProductFeature" Title="AdministrationServiceInstallation" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
            <ComponentGroupRef Id="AdministrationServiceComponents" />
            <ComponentRef Id="ApplicationShortcut" />
            <ComponentRef Id="ApplicationShortcutDesktop"/>
  </Feature>

  </Product>


   <Fragment>
  <Directory Id="TARGETDIR" Name="SourceDir">
       <Directory Id="ProgramFiles64Folder">
        <Directory Id="Company" Name="Eurotherm">
          <Directory Id="App" Name="Reviewer">
            <Directory Id="INSTALLFOLDER" Name="AdministrationService" >     
            </Directory>
          </Directory>
        </Directory>
      </Directory>
            <Directory Id="ProgramMenuFolder">
                <Directory Id="ApplicationProgramsFolder" Name="Eurotherm Reviewer" />
            </Directory>
            <Directory Id="DesktopFolder" Name="Desktop" />
  </Directory>
 </Fragment>

     <Fragment>
    <DirectoryRef Id="ApplicationProgramsFolder">
      <Component Id="ApplicationShortcut" Guid="*" Win64="yes"> 
        <Shortcut Id="ApplicationStartMenuShortcut"
                  Name="Reviewer Services"
                  Target="[INSTALLFOLDER]shortcut_s.url"
                  WorkingDirectory="APPLICATIONROOTDIRECTORY"
                  Icon="shortcut_s.url" />
        <RemoveFolder Id="CleanUpShortCut" Directory="ApplicationProgramsFolder" On="uninstall" />
        <RegistryValue Root="HKCU" Key="Software\Microsoft\Reviewer" Name="installed" Type="integer" Value="1"
                       KeyPath="yes" />
      </Component>
    </DirectoryRef>
    <DirectoryRef Id="DesktopFolder">
      <Component Id="ApplicationShortcutDesktop" Guid="*" Win64="yes">
        <Shortcut Id="DesktopShortcut"
                  Name="Services Reviewer"
                  Target="[INSTALLFOLDER]shortcut_s.url"
                  WorkingDirectory="APPLICATIONROOTDIRECTORY"
                  Icon="shortcut_s.url" />
        <RemoveFolder Id="RemoveDesktopShortCut" Directory="DesktopFolder" On="uninstall" />
        <RegistryValue Root="HKCU" Key="Software\Microsoft\Reviewer" Name="installed" Type="integer" Value="1"
                       KeyPath="yes" />
      </Component>
    </DirectoryRef>
  </Fragment>






 <Fragment>
  <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">

            <Component Id="WebShortcut" Guid="" Win64="yes">
                <File Id="web_shortcut_id" Name="shortcut_s.url" Source="shortcut_s.url"/>
            </Component>    

      <Component Id="removeAll" Guid="*" Win64="yes">
       <CreateFolder />
       <util:RemoveFolderEx Id="RemoveAdministrationServicesFolder" On="uninstall" Property="INSTALLFOLDER" />
   </Component> 
            <Component Id="ReviewerServices.web.exe" Guid="*" Win64="yes">
            <File Id="ReviewerServices.web.exe" KeyPath="yes" Source="$(var.publishDir)\ReviewerServices.web.exe" />
                  <ServiceInstall Id="AdministrationServiceInstaller" 
                                            Type="ownProcess" 
                                            Vital="yes" 
                                            Name="ReviewerServices.web"
                                            DisplayName="Reviewer Administration Service"
                                            Description="ReviewerAdministrationService" 
                                            Start="auto" 
                                            Account="LocalSystem" 
                                            ErrorControl="ignore" 
                                            Interactive="no" />
                  <ServiceControl Id="AdministrationStartService" 
                                            Start="install" 
                                            Stop="both" 
                                            Remove="uninstall" 
                                            Name="ReviewerServices.web" 
                                            Wait="yes" />
            </Component>   
  </ComponentGroup>
 </Fragment>
</Wix>

【问题讨论】:

    标签: installation wix windows-installer wix3.5 wix3


    【解决方案1】:

    您可以在 Shortcut 标记的 Directory 值中指定它,而不是使用 DirectoryRef 标记来指示目的地,如下所示。请注意,我删除了周围的 DirectoryRef 标记。

    <Component Id="ApplicationShortcutDesktop" Guid="*" Win64="yes">
       <Shortcut Id="DesktopShortcut"
                   Name="Services Reviewer"
                   Directory="DesktopFolder"
                   Target="[INSTALLFOLDER]shortcut_s.url"
                   WorkingDirectory="APPLICATIONROOTDIRECTORY"
                   Icon="shortcut_s.url" />
       <RegistryValue Root="HKCU" Key="Software\Microsoft\Reviewer" Name="installed" Type="integer" Value="1"
                      KeyPath="yes" />
    </Component>
    

    您使用的 RemoveFolder 将指定在卸载时应删除 Desktop 文件夹,这是不可能的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 2011-11-23
      • 2015-03-27
      • 1970-01-01
      • 2010-09-16
      • 2015-08-17
      相关资源
      最近更新 更多