【问题标题】:How to loop through folders if I do not necessarily know their structure but only the destination?如果我不一定知道它们的结构而只知道目的地,如何遍历文件夹?
【发布时间】:2012-04-14 15:46:24
【问题描述】:

我正在编写一个需要访问c:\program files\program_name\ 内的文件的程序。

我的目标文件将始终在\program_name\program_name\bin\something.exe

但是,由于程序是从存档中提取的,如果用户解压不当,它会简单地\program_name\bin\something.exe,跳过一个完整的级别。

目前我基本上是在获取c:\program files\ 的内容,收集包含program_name 的所有文件夹的名称,然后将它们添加到列表中,然后使用列表循环遍历每个文件夹,看看是否有program_name 在里面等等,这应该最终引导我得到结果。

基本上,我正在为每种可能性创建大量代码。有没有更聪明的方法来解决这个问题?

【问题讨论】:

    标签: c# search recursion directory


    【解决方案1】:

    听起来您可以从写入注册表的安装程序中受益。然后你就会知道所有文件和文件夹在哪里,即使用户安装到一个奇怪的位置。

    【讨论】:

    • 原程序不是我设计的,这是问题的核心。但是,是的,我肯定会这样做。
    • 啊。我同情。那么,进行递归搜索可能是您唯一的选择。可选:作为最后的手段,让用户指明它的安装位置。
    【解决方案2】:

    为了扩展 Charlie 所说的内容——您可以将原始应用程序包装在某种统一的安装程序类型中,该程序会编写注册表并将应用程序提取到用户决定的任何位置。安装程序将提示用户安装位置,并将提取到该位置。 InnoSetup 可以配置为写入卸载信息、放置卸载链接等。您可以自定义 InnoSetup 脚本的卸载程序部分以执行您需要的任何清理,和/或在必要时调用其他外部程序。

    InnoSetup 允许您在实际的安装程序 exe 中打包内容,因此您只需分发一个文件。我可以验证它是否有效——尽管我从未尝试过它来打包大文件。

    这是 InnoSetup 的链接:http://www.jrsoftware.org/isinfo.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 2023-04-09
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多