【问题标题】:Uninstall removes installation folder as well as parent folder卸载删除安装文件夹以及父文件夹
【发布时间】:2011-07-05 14:48:21
【问题描述】:

用户选择默认网站将他自己的网站安装到其下的子文件夹中。 一切正常,但在卸载步骤中,此文件夹+子文件夹被删除,默认网站自然也会从 IIS 中删除。

如何避免删除默认网站文件夹?

【问题讨论】:

    标签: wix uninstallation


    【解决方案1】:

    如果 WebSite 元素位于组件之外,则它应该仅用作定位器,而不是安装或卸载,这听起来就像您想要的默认网站一样。

    如果您在组件中包含 WebSite 元素,那么您就是在告诉 WiX 您确实想要控制该网站的安装和卸载。

    WiX WebSite Element (see bottom of page)

    【讨论】:

    • 可能是我的错误:安装程序将 Web 应用程序(虚拟目录)添加到现有的默认网站。卸载会删除虚拟目录、用户文件和这个默认网站(!),它不是由安装程序创建但之前存在的..
    • +1。 @Oleg,按照 Rob 的建议,将 WebSite 元素移出组件定义。这是适合您情况的解决方案,因为您只安装虚拟目录,而不是站点本身。但是,有时您需要将站点放入组件中,即使它解析为默认网站。在这种情况下,将组件标记为“永久”是有意义的。但是,再次强调一下,您的案例的解决方案是 99% 的可能性是将 WebSite 元素移出 Component 定义。
    【解决方案2】:

    卸载不应在目标计算机上留下资源。这就是卸载过程总是删除 IIS 元素的原因。

    如果您想安装您的网站并在卸载过程中保留它,您可以尝试使用custom actions 而不是 WiX 支持。

    【讨论】:

    • 我的意思是:IIS 包含默认网站,安装程序将用户的 Web 应用程序添加到此站点。但是卸载会删除用户的虚拟目录+文件和父级默认网站。
    【解决方案3】:

    一种方法是让 wesite 组件在一个片段中而不是在一个组件中,网站将被搜索而不是安装或卸载。

    <!-- Because this is under a fragment (rather than a component) it merely locates the specified site rather than install or uninstall it -->
        <iis:WebSite Id="WS_DEFAULT" Description="Default Web Site">
          <iis:WebAddress Id="AllUnassigned" Port="80" />
        </iis:WebSite>
    

    因此在卸载时,只会删除已安装的应用程序/文件。

    【讨论】:

      猜你喜欢
      • 2011-01-02
      • 2012-09-14
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      • 2011-06-18
      • 1970-01-01
      • 2013-02-20
      相关资源
      最近更新 更多