2017-08-15 155 views
2

我有这个Wix XML脚本来在桌面上安装我的服务和快捷方式图标。安装完美,卸载程序也可以工作,但它会在桌面上留下快捷方式图标。我无法弄清楚什么是错的,我作为维克斯文件中指定的On="uninstall"参数,卸载后桌面图标不会被删除 - Wix

这里的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> 

回答

2

除了使用DirectoryRef标签指示的目的地,可以指定它在Shortcut标签的Directory值中,如下所示。请注意,我删除了周围的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将指定在卸载时应删除桌面文件夹,这是不可能的。

相关问题