首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Inno安装程序[UninstallDelete]删除除一个文件夹之外的所有

Inno安装程序[UninstallDelete]删除除一个文件夹之外的所有
EN

Stack Overflow用户
提问于 2015-08-20 09:44:55
回答 2查看 5K关注 0票数 2

对于我的应用程序的安装和部署,我使用的是Inno-set5.5.4。我目前的安装结构如下:

代码语言:javascript
运行
复制
    C:\MyApp
    C:\MyApp\app.exe
    C:\MyApp\FolderA
    C:\MyApp\FolderA\InstalledFile.txt
    C:\MyApp\FolderA\NewFile.txt
    C:\MyApp\FolderB
    C:\MyApp\FolderB\NewFile.txt
    ...
    C:\MyApp\FolderZ

卸载应用程序后,我希望删除应用程序可以创建的所有可能的文件,但存在于特定文件夹中的文件除外。(即C:\MyApp\FolderA\NewFile.txt)。

我的第一次尝试是在UninstallDelete部分中为我想要清理的每个文件夹设置一个条目。如下所示:

代码语言:javascript
运行
复制
    [UninstallDelete]
    Type: filesandordirs; Name: C:\MyApp\FolderB
    Type: filesandordirs; Name: C:\MyApp\FolderC
    ...
    Type: filesandordirs; Name: C:\MyApp\FolderZ

但是,我不喜欢这个解决方案,因为每次向应用程序添加一个新文件夹时,我都必须考虑修改安装程序。

第二种方法是,只有当特定文件夹为空时才删除它,然后将应用程序的根文件夹设置为要删除。如下所示:

代码语言:javascript
运行
复制
     [UninstallDelete]
     Type: dirifempty; Name: C:\MyApp\FolderA
     Type: filesandordirs; Name: C:\MyApp\

第二种方法有效吗?是否有更合理的方法来达到这个目的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-20 10:46:04

文件被进程访问时不能被删除。找出导致这一切的原因。在开始删除文件夹之前,请退出即将删除的所有应用程序和服务。确保没有其他应用程序访问您要删除的文件(记事本、word等)。有时候,在结束其他进程之后再等待几秒钟就可以删除它们所使用的文件(也许其他人可以解释一下)。

有一次,我们找不到一个文件不能被卸载程序删除的原因。过了很长一段时间,我们发现正在运行的apachemonitor.exe正在访问一个日志文件,而且我们以前并没有终止这个进程。很难找到阻塞过程,但特别是当它总是同一个无法删除的文件时,您应该更好地查找安装和使用的进程,以便使一个正常工作的卸载程序正常工作。

如果您想删除文件夹中的所有文件,除了一个特殊文件,那么您应该在卸载程序中使用Pascal。函数引用(http://www.jrsoftware.org/ishelp/index.php?topic=scriptfunctions)在这里有很大帮助。

您可以使用FindFirstFindNextFindClose对目录进行迭代。为要删除的所有项调用DelTree(DirName, true, true, true)DeleteFile

CurUninstallStepChanged事件(如果是CurUninstallStep=usPostUninstall )内执行该代码。

票数 1
EN

Stack Overflow用户

发布于 2018-02-22 10:38:49

另一种防止在卸载时删除文件的方法是“使用参数标志”:

节文件中的uninsneveruninstall;

来自帮助的信息:

从不卸载 永远不要删除文件。此标志在安装非常常见的共享文件时非常有用,在任何情况下都不应该删除这些文件,例如MFC DLL。

备注:如果此标志与sharedfile标志相结合,则在卸载时将永远不会删除该文件,但引用计数仍将适当减少。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32114880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档