【问题标题】:unable to remove the desktop icon after uninstallation in WIX在 WIX 中卸载后无法删除桌面图标
【发布时间】:2018-07-30 11:40:24
【问题描述】:

我正在为我的应用程序使用 WIX 安装程序,一切正常,但是当我卸载应用程序时,桌面图标和开始菜单图标仍然存在。 我的xml有什么问题。遵循 Wix 文档给出的步骤。 帮助..

XML:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="applicationName" Language="1033" Version="1.0.0.0" Manufacturer="manufacturerName" UpgradeCode="PUT-GUID-HERE">
    <Package Id="*" InstallerVersion="201" Compressed="yes" InstallScope="perMachine" Comments="Windows Installer Package" ReadOnly="yes" InstallPrivileges="elevated" />       
    <Feature Id="ProductFeature" Title="applicationName" Level="1">         
        <ComponentRef Id="Permission.INSTALLFOLDER" />
        <ComponentRef Id="ApplicationDeskShortcutComp" />
        <ComponentGroupRef Id="HeatGenerated" />
    </Feature>      
    <Media Id="1" Cabinet="cab1.cab" EmbedCab="yes" />
    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFiles64Folder">
            <Directory Id="CompanyNameFolder" Name="CompanyName">
                <Directory Id="INSTALLFOLDER" Name="applicationName">
                    <Component Id="Permission.INSTALLFOLDER" Guid="*">
                        <CreateFolder>
                            <Permission User="Everyone" GenericAll="yes" />
                        </CreateFolder>
                    </Component>                        
                </Directory>
            </Directory>
        </Directory>
        <Directory Id="DesktopFolder" Name="applicationName" />         
    </Directory>

    </DirectoryRef>-->
    <!--Add the shortcut to installer package For DeskTop-->
    <DirectoryRef Id="DesktopFolder">
        <Component Id="ApplicationDeskShortcutComp" Guid="*" Win64="yes" >
            <Shortcut Id="ApplicationDeskShortcut" Name="applicationName" Description="applicationName" Target="[INSTALLFOLDER]exeName.exe" WorkingDirectory="DesktopFolder" Icon="IconName.exe" >
            </Shortcut> 
            <RemoveFolder Id="DesktopFolder" On="uninstall" />              
            <RegistryValue Root="HKCU" Key="Software\Manufacturer\ProductName" Name="installed" Type="integer" Value="1" KeyPath="yes" />
        </Component>
    </DirectoryRef>

    <Property Id="MYWIXUI_MONDO" Value="INSTALLFOLDER" />
    <UIRef Id="MyWixUI_Mondo" />
    <Icon Id="IconName.exe" SourceFile=".\Icons\MainLogo.ico" />
    <Property Id="ARPPRODUCTICON" Value="IconName.exe" />
   </Wix>

【问题讨论】:

  • &lt;RemoveFolder Id="DesktopFolder" On="uninstall" /&gt; 是错误的。您当然不想删除用户的桌面文件夹。这可能已经导致组件卸载失败,因此桌面快捷方式保留在那里。
  • @zett42 不,我已经检查过了,这不是问题所在。感谢您的回复。
  • 通过运行以下命令行创建详细日志:msiexec -x {ProductCode} -l*v logfile.txt(显然将 {ProductCode} 替换为实际产品代码)。在日志中搜索InstallValidate。应该有一行包含Component: ApplicationDeskShortcutComp; Installed: Local; Request: Absent; Action: Absent,类似于开始菜单快捷方式。
  • @zett42 不,日志文件中没有 ApplicationDeskShortcutComp 的条目。 “InstallValidate。返回值 1。”

标签: wix windows-installer


【解决方案1】:

现在没时间测试这个,但你能不能先试着改变一下:

<Directory Id="DesktopFolder" Name="applicationName" />

进入这个:

<Directory Id="DesktopFolder" />

DesktopFolder 是一个内置的 Windows Installer 文件夹,应该解析为用户的桌面文件夹所有用户的公用桌面文件夹 取决于ALLUSERS 的设置(每台机器或每用户安装)。

在安装过程中,MSI 目录解析(成本计算)将为您正在运行的系统分配正确的 DesktopFolder 值(基于 ALLUSERS 设置)。我认为一旦目录解析运行,您自己在 WiX 源中分配给 DesktopFolder 的任何内容都会被清除,因此上述 WiX 标记更改建议应该起作用并没有直接的逻辑原因,但我认为应该对其进行测试。如果可用,请在干净的虚拟机上进行测试。

【讨论】:

  • 它没有用。我还检查了添加/删除程序列表没有重复的产品。甚至我也尝试使用产品 ID 从命令提示符卸载以检查重复安装。未找到。
  • 您是否至少在干净的虚拟机或干净的机器上进行了测试?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 2011-11-23
  • 2015-10-10
  • 1970-01-01
  • 2011-05-08
  • 1970-01-01
相关资源
最近更新 更多