Как перебирать папки, если я не обязательно знаю их структуру, а только место назначения? - PullRequest
1 голос
/ 31 марта 2012

Я пишу программу, которой нужен доступ к файлу внутри c:\program files\program_name\.

Мой целевой файл всегда будет внутри \program_name\program_name\bin\something.exe

Однако, поскольку программа извлекается из архива, если пользователь распакует ее неправильно, это будет просто \program_name\bin\something.exe,пропуская целый уровень.

В настоящее время я в основном получаю содержимое c:\program files\, собираю имена всех папок, которые содержат program_name, затем добавляю их в список и затем использую список для циклического просмотра.каждый из тех, кто видит, есть ли внутри него program_name и т. д., что должно в конечном итоге привести меня к результату.

В основном я создаю большие куски кода для каждого человека.возможность.Есть ли более разумный способ сделать это?

Ответы [ 2 ]

3 голосов
/ 31 марта 2012

Звучит так, будто вы могли бы выиграть, если бы установщик записывал в реестр.Тогда вы узнаете, где находятся все файлы и папки, даже если пользователь установит их в странном месте.

0 голосов
/ 31 марта 2012

Чтобы расширить то, что сказал Чарли - вы можете обернуть оригинальное приложение в некую унифицированную программу установки типа, которая будет записывать реестр и извлекать приложение в любое место, которое выберет пользователь.Установщик запросит у пользователя место для установки и извлечет его в это место.InnoSetup можно настроить для записи информации об удалении, размещения ссылок на удаление и т. Д. Вы можете настроить часть удаления сценария InnoSetup для выполнения необходимой очистки и / или вызова других внешних программ, если необходимо.

InnoSetup позволяет вам упаковать вещи в настоящий exe-файл установщика, так что вам нужно всего лишь распространить один файл.Я могу убедиться, что это работает - хотя я никогда не пробовал это для упаковки огромных файлов.

Вот ссылка на InnoSetup: http://www.jrsoftware.org/isinfo.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...