Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 2
Регистрация: 07.03.2013
Сообщений: 50

Работа с архивами!

12.03.2013, 17:20. Показов 2939. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня скачивается архив с интернета!
Как его разархировать???
Ну или как сделать так, чтобы при распаковки самораспаковывающегося архива не вылазило такое ОКНО (http://rghost.ru/44375169.view) А просто архив разархировывался в текщую папку!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2013, 17:20
Ответы с готовыми решениями:

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

C# и работа с архивами
Доброго времени суток госпада! Речь вот о чем, как можно взять архивный файл а именно RAR, распаковать, поработать с файлами и обратно...

работа с zip архивами
Здравствуйте! У меня такая проблема. Есть zip архив, в котором куча всяких файлов. Мне необходимо программно (на C#) вывести на форму...

10
 Аватар для GoldenId
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 877
Записей в блоге: 10
12.03.2013, 20:23
Попробуйте How can I identify a WinRAR SFX using a binary signature of some sort?

Добавлено через 11 минут
Вот здесь сказано
To install in silent mode: WinRAR SFX module and WinRAR distributive supports /s switch which forces the silent mode. So it is possible to run:

wrar300.exe /s
0
0 / 0 / 2
Регистрация: 07.03.2013
Сообщений: 50
13.03.2013, 17:02  [ТС]
Цитата Сообщение от GoldenId Посмотреть сообщение
Попробуйте How can I identify a WinRAR SFX using a binary signature of some sort?

Добавлено через 11 минут
Вот здесь сказано
А где это находиться??
И чесно! я ничего не понял)
Обьясни по русски если можеш
0
 Аватар для GoldenId
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 877
Записей в блоге: 10
13.03.2013, 20:39
Что Вам нужно сделать? Просто один раз разжать самораспаковывающийся архив? Или написать программу, которая бы умела разжимать такие архивы в silence режиме?
0
0 / 0 / 2
Регистрация: 07.03.2013
Сообщений: 50
14.03.2013, 15:41  [ТС]
Мне надо разархировать zip или rar архив! и сделать это так чтобы пользователь ничего не делал (тоесть архив сам разархировывался)!
А если так не возможно то как разархировать САМОРАСАКОВЫВАЮЩИЙСЯ АРХИВ!
(чтобы пользователь также ничего не трогал)
0
 Аватар для GoldenId
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 877
Записей в блоге: 10
14.03.2013, 18:17
Таки Вам нужно разжать архив программно.
Просто запускаете его с параметрами командной строки для SFX-модулей:
Bash
1
myrarsfx.exe -s -d "C:\Destination Path"
Добавлено через 2 минуты
Например
C#
1
2
3
4
using System.Diagnostics;
 
    //...
    Process.Start( "myrarsfx.exe -s -d \"C:\\Destination Path\"" );
0
0 / 0 / 2
Регистрация: 07.03.2013
Сообщений: 50
15.03.2013, 15:28  [ТС]
Извините!
Но я немного не понял)
ЗАчем мне командная строка если мне это надо сделать нажатием кнопки на форме!
Тоесть человек должен нажимать на кнопку и ему должен разархировыватся архив и чтобы он этого не видел!!
Через командную строку все работает (я вписываю туда ваш код BASH)!
а когда я вписываю код в C#! У меня пишет что указанный файл не найден)
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
15.03.2013, 18:19
http://dotnetzip.codeplex.com/
C#
1
2
3
4
5
6
7
using (var file = ZipFile.Read(zipFilePath))
            {
                foreach (var entry in file.Entries)
                {
                    entry.Extract(targetFolder);
                }
            }
Как вариант
0
 Аватар для GoldenId
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 877
Записей в блоге: 10
16.03.2013, 17:14
Цитата Сообщение от tribleromb Посмотреть сообщение
Извините!
Но я немного не понял)
ЗАчем мне командная строка если мне это надо сделать нажатием кнопки на форме!
Тоесть человек должен нажимать на кнопку и ему должен разархировыватся архив и чтобы он этого не видел!!
Через командную строку все работает (я вписываю туда ваш код BASH)!
а когда я вписываю код в C#! У меня пишет что указанный файл не найден)
Я предложил вариант, когда распаковка идет под управлением самого самораспаковывающегося архива. Командная строка нужна для того, чтобы запустить этот самораспаковывающийся архив. Ключ "-s" подавляет появление окон самораспаковывающегося архива. Если нужно сделать это по кнопке, то вот синхронный вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        // кнопка "Распаковать"
        private void syncExtractButton_Click( object sender, EventArgs e )
        {
            // запуск процесса, в котором выполняется распаковка
            // самораспаковывающегося архива
 
            // синхронный вариант
            Process extrPrc = Process.Start( mySfxExeFullName, "-s -d " + myDestPath );
            if( extrPrc != null )
                extrPrc.WaitForExit();
            else
                MessageBox.Show( "Не удалось запустить самораспаковывающийся архив" );
        }
Вот асинхронный вариант
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        // кнопка "Распаковать"
        private void asyncExtractButton_Click( object sender, EventArgs e )
        {
            // запуск процесса, в котором выполняется распаковка
            // самораспаковывающегося архива
 
            // aсинхронный вариант
            Process extrPrc = Process.Start( mySfxExeFullName, "-s -d " + myDestPath );
            if( extrPrc == null )
                MessageBox.Show( "Не удалось запустить самораспаковывающийся архив" );
            extrPrc.Exited += OnExtractProcessExited;
        }
 
        System.Diagnostics.Process _extrPrc;
 
        // Событие завершения процесса распаковки
        void OnExtractProcessExited( Object sender, EventArgs e )
        {
            MessageBox.Show( "Распаковка завершена" );
        }
Мой вариант более громоздкий, чем предложил da1z, однако в этом случае Вы не зависите от разницы в реализации алгоритмов архивации в .NET и в той версии WinRAR, которой паковали Ваш архив. Например на тот маловероятный случай, если WinRAR как то навернёт свои алгоритмы, а в каркасе этого не будет.
1
0 / 0 / 2
Регистрация: 07.03.2013
Сообщений: 50
17.03.2013, 17:45  [ТС]
Цитата Сообщение от GoldenId Посмотреть сообщение
Я предложил вариант, когда распаковка идет под управлением самого самораспаковывающегося архива. Командная строка нужна для того, чтобы запустить этот самораспаковывающийся архив. Ключ "-s" подавляет появление окон самораспаковывающегося архива. Если нужно сделать это по кнопке, то вот синхронный вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        // кнопка "Распаковать"
        private void syncExtractButton_Click( object sender, EventArgs e )
        {
            // запуск процесса, в котором выполняется распаковка
            // самораспаковывающегося архива
 
            // синхронный вариант
            Process extrPrc = Process.Start( mySfxExeFullName, "-s -d " + myDestPath );
            if( extrPrc != null )
                extrPrc.WaitForExit();
            else
                MessageBox.Show( "Не удалось запустить самораспаковывающийся архив" );
        }
Вот асинхронный вариант
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        // кнопка "Распаковать"
        private void asyncExtractButton_Click( object sender, EventArgs e )
        {
            // запуск процесса, в котором выполняется распаковка
            // самораспаковывающегося архива
 
            // aсинхронный вариант
            Process extrPrc = Process.Start( mySfxExeFullName, "-s -d " + myDestPath );
            if( extrPrc == null )
                MessageBox.Show( "Не удалось запустить самораспаковывающийся архив" );
            extrPrc.Exited += OnExtractProcessExited;
        }
 
        System.Diagnostics.Process _extrPrc;
 
        // Событие завершения процесса распаковки
        void OnExtractProcessExited( Object sender, EventArgs e )
        {
            MessageBox.Show( "Распаковка завершена" );
        }
Мой вариант более громоздкий, чем предложил da1z, однако в этом случае Вы не зависите от разницы в реализации алгоритмов архивации в .NET и в той версии WinRAR, которой паковали Ваш архив. Например на тот маловероятный случай, если WinRAR как то навернёт свои алгоритмы, а в каркасе этого не будет.
СПАСИБО ОГРОМНОЕ!!

Добавлено через 10 минут
Но у меня все равно не получается((
Скажите пожалуйста что нужно указывать взаместо mySfxExeFullName!
И взаместо myDestPath!

Добавлено через 18 часов 38 минут
Спасибо ! Все получилось!
Как привязать к загрузке progressBar!
0
 Аватар для GoldenId
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 877
Записей в блоге: 10
18.03.2013, 01:03
Цитата Сообщение от tribleromb Посмотреть сообщение
Спасибо ! Все получилось!

Цитата Сообщение от tribleromb Посмотреть сообщение
Как привязать к загрузке progressBar!
Тут есть два пути: попроще и посложнее.
Если Вам достаточно просто показать пользователю, что что-то происходит, то делаете
1. Создаете (в редакторе) дополнительную форму (например StandByForm).
2. Кидаете на неё ProgressBar и задаёте ему (в свойствах) Style = Marque.
3. Задаёте форме FormBorderStyle = FixedToolWindow (это - маленький удобный заголовок)
4. Задаёте форме ControlBox = False (от отсутствие креста закрытия)

Дальше используете асинхронный вариант, который я предложил, примерно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
        private ВашаГлавнаяФорма_Load()
        {
            // ... остальной код
            _standByForm = new StandByForm();
        }
        // кнопка "Распаковать"
        private void asyncExtractButton_Click( object sender, EventArgs e )
        {
            // запуск процесса, в котором выполняется распаковка
            // самораспаковывающегося архива
 
            // aсинхронный вариант
            Process extrPrc = Process.Start( mySfxExeFullName, "-s -d " + myDestPath );
            if( extrPrc == null )
            {
                MessageBox.Show( "Не удалось запустить самораспаковывающийся архив" );
                return;
            }
            extrPrc.Exited += OnExtractProcessExited;
            _standByForm.ShowModal();
        }
 
        System.Diagnostics.Process _extrPrc;
 
        // Событие завершения процесса распаковки
        void OnExtractProcessExited( Object sender, EventArgs e )
        {
            _standByForm.Hide();
            MessageBox.Show( "Распаковка завершена" );
        }
        StandByForm _standByForm;
Не уверен, что так получится всё, но попробуйте.

Да, если Вам обязательно нужно показывать, как ползёт полоска, то прийдётся морочиться с отслеживанием... хм, а в том варианте, который предложил я, и не получится этого. Получить процент готовности из другого процесса Вам удастся врядли. Вариант da1z'а для этого подходит больше.

Другое дело, Вы уверены, что Вам нужно именно это? Речь не о том, как сляпать инсталяху?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.03.2013, 01:03
Помогаю со студенческими работами здесь

Работа с архивами
У меня есть программа - сервер которая принимает данніе от клиента. Данные сохраняются в текстовом файле. Нужно организовать что бы...

Работа с архивами
Доброго времени суток уважаемые! Необходима ваша помощь :) Нужно автоматизировать процесс подсчета файлов в архивах! Архивы формата...

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

Работа с Zip архивами С++
Здравствуйте, не могу дойти до того, как же можно передать пароль в ZIP архив, подскажите пару идей, пожалуйста, прочесал весь яндекс...

Работа с архивами и файлами
Добрый день уважаемые форумчане! Прошу помощи в написании батника. Задача стоит в том, что надо в папке с текущей датой (формат даты...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru