代码之家  ›  专栏  ›  技术社区  ›  glenneroo Menyus777

如何使wix在卸载后保留文件?

  •  24
  • glenneroo Menyus777  · 技术社区  · 16 年前

    卸载后是否有方法不删除文件?

    4 回复  |  直到 8 年前
        1
  •  37
  •   Stein Åsmul    12 年前

    设置 Component 价值 Permanent="yes" 像这样:

    <Component Id="LicenseDoc" Guid="*" Permanent="yes">
        <File Id ="License.rtf" Source="$(var.SolutionDir)Installer\License.rtf" />
    </Component>
    
        2
  •  6
  •   glenneroo Menyus777    16 年前

    来自Wixusers邮件列表的Phil Wilson致意:

    请参阅组件表的msi sdk文档-将组件guid设置为null(空)。这样做的结果是组件没有注册(因此无法修复),也不会被卸载。

        3
  •  2
  •   starx207    8 年前

    我知道这个问题由来已久,但我只是在寻找安装程序安装丢失字体的方法时偶然发现了这个问题,但在卸载应用程序时并没有卸载它们。希望它能帮助其他可能遇到这个问题的人。对于提供的两种解决方案(空白/空guid或将组件设置为permanant),我有点不舒服。所以我想到了这个,这对我很有用:

    <Feature Id="myFonts" Title="Application Fonts" Level="1">
      <ComponentGroupRef Id="Component_group_with_fonts_to_install" />
      <Condition Level="0">
        <![CDATA[REMOVE = "ALL"]]>
      </Condition>
    </Feature>
    

    通过这种方式安装字体功能,但在卸载时,该功能的级别设置为0,因此它将保持独立。

        4
  •  0
  •   Stein Åsmul    12 年前

    另一种预防方法 Windows安装程序 从卸载时删除组件 设置空白或空组件guid . 这将导致安装该组件,但永远不会跟踪或卸载该组件。

    见 MSI SDK documentation : …如果此列(componentid)为空,则安装程序不会注册该组件,并且安装程序无法删除或修复该组件。如果只在安装过程中需要该组件(例如清理临时文件或删除旧产品的自定义操作),则可能会有意执行此操作。当将数据文件复制到不需要注册的用户计算机时,它可能也很有用。 “

    推荐文章