【问题标题】:How to Remove a folder by condition during Uninstall process?如何在卸载过程中按条件删除文件夹?
【发布时间】:2014-07-05 10:59:23
【问题描述】:

我有两个产品,所以我创建了两个安装程序,比如说 ShowcaseInterior。我的产品使用了一个通用的第三方应用程序,所以我为每个安装程序提供了这个。

如果我想安装 Showcase 产品,在安装过程中,它会检查是否安装了内部产品。如果 Interior 产品未安装,则第三方文件将安装在 Common 文件夹中。

Showcase 将像这样安装:

          {pf}\Company_Name\
                     ----->Common
                             --->Third party player
                     ----->Showcase
                             --->Showcase product related files

现在我要安装Interior,像Showcase安装,它会检查Showcase是否安装。目前 Showcase 已安装。所以它只会安装内部的东西,不会安装第三方文件。

现在文件结构如下:

         {pf}\Company_Name
                     ----->Common
                             --->Third party player
                     ----->Showcase
                             --->Showcase product related files
                     ----->Interior
                             --->Interior product related files

现在我的问题是,

当我卸载 Showcase 产品时,它也会删除 Common 文件夹。因此内部产品将无法运行。所以我想告诉卸载程序,不要按条件卸载 Common 文件夹。如何做到这一点?

请帮忙..

提前谢谢...

【问题讨论】:

    标签: inno-setup


    【解决方案1】:

    1) 您安装的 {app} 文件夹是什么? {pf}\Company_Name 还是直接 ShowcaseInterior 文件夹?

    2) 卸载程序通常会删除安装过程中复制的 {app} 文件夹中的所有文件。这意味着:如果有人在 {app} 文件夹中创建新文件(比如说一些配置文件),卸载程序不会删除它。 因为 {app} 文件夹只有在空的(默认情况下)卸载程序保留它时才会被删除(显示相应的消息)。

    3) 你使用什么标志来安装文件?您可以在 Common 文件上使用 uninsneveruninstall 标志,这样卸载程序将永远不会删除它们,您可以在 [代码] 中删除它们。 (您需要以某种方式检测它们是否未被其他软件使用)。

    目前没有确切的解决方案(需要更多信息),但最后的机会是手动复制所有文件(例如,将它们解压缩到 Temp 并复制到 [Code] 中),这样您就可以完全控制它们。

    【讨论】:

    • 感谢@Slappy 提供您的信息。我从 [news.jrsoftware.org/read/… 找到了解决方案。这是我想要的工作。现在我将解释您指出的内容.... 1) Showcase 产品的安装结构:{app} ---> {pf}\Company_name\Showcase 以及对于内部产品:{app}--->{ pf}\Company_name\Interior 2)是的,默认卸载程序会删除除新创建的文件以外的所有文件 3)正如您所说,我们也可以对共享文件夹使用“uninsneveruninstall”。但它必须通过代码删除。所以最后“sharedfile”是解决方案
    猜你喜欢
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 2013-02-20
    • 1970-01-01
    • 2016-06-16
    相关资源
    最近更新 更多