Jump to content

Attacher .NET


bioshock
 Share

Recommended Posts

Titulo do Projecto: Attacher .NET

Última Versão: 1.0

Líder do Projecto: bioshock

Descrição do Projecto: É um pequeno utilitário que tem como fim facilitar o zippar do dia-a-dia, juntando todos os arquivos, facilmente e eficazmente, num só ficheiro, sem o uso do Ctrl + c & Ctrl + v.

Screenshot:

http://img685.imageshack.us/img685/8977/attachernet.jpg

Como funciona: Basta clicar em Add e de seguida em Files ou Folders. Podemos adicionar vários ficheiros ao mesmo tempo. Depois apenas tem que se clicar em Compress All e escolher o directório do ficheiro .Zip a guardar.

Download executável: http://www.mediafire.com/?3da9ds08jg62p5v

Observações: Ainda gostava de implementar duas opções que não estão disponíveis, tais como a opção de adicionar pastas (Folders) e uma pequena progressbar enquanto os ficheiros estão a ser zippados. A primeira opção é fácil, já a segunda até agora só consegui quando o ficheiro .Zip já está criado.

Espero já trazer implementado estas opções e/ou mais numa futura versão.

Link to comment
Share on other sites

Vai dando progressos. Uma sugestão que faço é dares a possibilidade de arrastar os ficheiros e largá-los na janela para adicionar ao arquivo. Também poderia ser útil uns gráficos para comparar tamanhos de antes e depois,e  ver a percentagem esperada de compressão.

A finalidade é só mesmo comprimir os ficheiros num arquivo, ou é visualizar arquivos também?

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Esse painel com os botões "Add" e "Remove" é algum controlo personalizado?

Interessante era poder ter vários "perfis", em que sempre que iniciavas a aplicação, escolhias o perfil a comprimir, e ele criava automaticamente um ficheiro .zip com os ficheiros definidos nesse perfil. 🙂

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Link to comment
Share on other sites

Vai dando progressos. Uma sugestão que faço é dares a possibilidade de arrastar os ficheiros e largá-los na janela para adicionar ao arquivo. Também poderia ser útil uns gráficos para comparar tamanhos de antes e depois,e  ver a percentagem esperada de compressão.

A finalidade é só mesmo comprimir os ficheiros num arquivo, ou é visualizar arquivos também?

Viva,

Em relação ao arrastar, não será semelhante ao Multi Select?

Quanto ao saber "Antes" & "Depois", é uma boa dica que vou ter em consideração para a próxima versão.

Inicialmente e se tudo ficar pronto como desejo, será só comprimir. Se tudo correr bem, a funcionalidade de visualização poderá ser adoptada.

Esse painel com os botões "Add" e "Remove" é algum controlo personalizado?

Interessante era poder ter vários "perfis", em que sempre que iniciavas a aplicação, escolhias o perfil a comprimir, e ele criava automaticamente um ficheiro .zip com os ficheiros definidos nesse perfil. 🙂

O painel é um simples MenuStrip.

Um perfil..mas que género de perfil? Que informações conteria esse perfil?

Link to comment
Share on other sites

Por exemplo, eu guardava um perfil chamado Projecto XPTO, e adicionava uma pasta com um projecto que estava a desenvolver, mais uns x ficheiros. Depois, apenas carregava em Comprimir Perfil, e ele comprimia-me esse perfil. Assim eu tinha conjuntos predefinidos de ficheiros que queria comprimir num único. 🙂

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Link to comment
Share on other sites

Por exemplo, eu guardava um perfil chamado Projecto XPTO, e adicionava uma pasta com um projecto que estava a desenvolver, mais uns x ficheiros. Depois, apenas carregava em Comprimir Perfil, e ele comprimia-me esse perfil. Assim eu tinha conjuntos predefinidos de ficheiros que queria comprimir num único. 🙂

Assim de repente, o que me ocorre seria, para ser mais leve, guardar esses tais perfis ou nos Settings ou em ficheiros .txt...

Edit: Download adicionado.

Link to comment
Share on other sites

Acho que ficheiros .txt são suficiente. Basta cada perfil ter um ficheiro .txt, e cada linha ser um ficheiro/pasta para comprimir. 🙂

Parece-me uma boa ideia. Mas primeiramente ainda gostava de implementar outras funcionalidades e resolver alguns aspectos que ainda não gosto na totalidade.

Mas fica a sugestão, obrigado!

Link to comment
Share on other sites

Experimentei a tua aplicação.

Tentei zipar o ficheiro de setup da tua aplicação, e correu tudo sem problemas. Depois, tentei comprimir algumas imagens que tinha aqui, e ao clicar em "compress" ocorreu a seguinte excepção:

Consulte o fim desta mensagem para obter detalhes sobre como invocar a depuração 
JIT (just-in-time) em vez desta caixa de diálogo.

************** Texto da excepção **************
System.ArgumentException: O URI da parte não é válido segundo as regras definidas na especificação Open Packaging Conventions.
   em System.IO.Packaging.PackUriHelper.ValidatePartUri(Uri partUri)
   em System.IO.Packaging.Package.CreatePart(Uri partUri, String contentType, CompressionOption compressionOption)
   em WindowsApplication2.Form1.AddToArchive(Package zip, String fileToAdd)
   em WindowsApplication2.Form1.ZipFiles()
   em WindowsApplication2.Form1.Button13_Click(Object sender, EventArgs e)
   em System.Windows.Forms.Control.OnClick(EventArgs e)
   em System.Windows.Forms.Button.OnClick(EventArgs e)
   em System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   em System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   em System.Windows.Forms.Control.WndProc(Message& m)
   em System.Windows.Forms.ButtonBase.WndProc(Message& m)
   em System.Windows.Forms.Button.WndProc(Message& m)
   em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   em System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Se calhar foi dos nomes dos ficheiros, foram os seguintes:

Inverno.jpg, Nenúfares.jpg, Pôr do sol.jpg, Trás-os-Montes.jpg

(familiar? 🙂 )

Deixo umas sugestões/notas:

* Vi que a opção de pastas está planeada. Vai ser precisa, visto que não posso adicionar 2 ficheiros com o mesmo nome (é normal, mas limita um pouco a funcionalidade)

* Dar algum feedback ao utilizador quando a aplicação está a comprimir (uma barra de progresso, por exemplo)

* Permitir que o instalador coloque um atalho no desktop e/ou menu iniciar

* Adicionar uma entrada ao menu de contexto do Windows (os menus quando se clica no botão direito do rato num ficheiro) e à semelhança do winrar/winzip, permitir comprimir os ficheiros rapidamente, e criar o zip naquela pasta.

Em relação ao arrastar, não será semelhante ao Multi Select?

Depende da pasta onde estejas. Por exemplo, supõe que eu quero comprimir os ficheiros da seguinte pasta:

c:\users\André\documentos\que\seca\de\caminho\tenho\de\carregar\em\tantas\pastas\para\la\chegar\ufa\cheguei\

e eu já a tenho aberta, porque estou lá a trabalhar. Era mais fácil a tua aplicação permitir que eu os arrastasse directamente para lá, em vez de percorrer todo esse caminho. Ou então, em alternativa, também podes usar a sugestão dos menus de contexto.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Experimentei a tua aplicação.

Tentei zipar o ficheiro de setup da tua aplicação, e correu tudo sem problemas. Depois, tentei comprimir algumas imagens que tinha aqui, e ao clicar em "compress" ocorreu a seguinte excepção:

Consulte o fim desta mensagem para obter detalhes sobre como invocar a depuração 
JIT (just-in-time) em vez desta caixa de diálogo.

************** Texto da excepção **************
System.ArgumentException: O URI da parte não é válido segundo as regras definidas na especificação Open Packaging Conventions.
   em System.IO.Packaging.PackUriHelper.ValidatePartUri(Uri partUri)
   em System.IO.Packaging.Package.CreatePart(Uri partUri, String contentType, CompressionOption compressionOption)
   em WindowsApplication2.Form1.AddToArchive(Package zip, String fileToAdd)
   em WindowsApplication2.Form1.ZipFiles()
   em WindowsApplication2.Form1.Button13_Click(Object sender, EventArgs e)
   em System.Windows.Forms.Control.OnClick(EventArgs e)
   em System.Windows.Forms.Button.OnClick(EventArgs e)
   em System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   em System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   em System.Windows.Forms.Control.WndProc(Message& m)
   em System.Windows.Forms.ButtonBase.WndProc(Message& m)
   em System.Windows.Forms.Button.WndProc(Message& m)
   em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   em System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Se calhar foi dos nomes dos ficheiros, foram os seguintes:

Inverno.jpg, Nenúfares.jpg, Pôr do sol.jpg, Trás-os-Montes.jpg

(familiar? 😛 )

O URI serve para ficheiros que contenham espaços (ex: Deamon Tools) ficar como: Daemon_Tools..

Vou ter de arranjar um método para os acentos.

Deixo umas sugestões/notas:

* Vi que a opção de pastas está planeada. Vai ser precisa, visto que não posso adicionar 2 ficheiros com o mesmo nome (é normal, mas limita um pouco a funcionalidade)

* Dar algum feedback ao utilizador quando a aplicação está a comprimir (uma barra de progresso, por exemplo)

* Permitir que o instalador coloque um atalho no desktop e/ou menu iniciar

* Adicionar uma entrada ao menu de contexto do Windows (os menus quando se clica no botão direito do rato num ficheiro) e à semelhança do winrar/winzip, permitir comprimir os ficheiros rapidamente, e criar o zip naquela pasta.

1. Pode limitar, mas também creio que seja fácil de resolver. À frente do ficheiro adiciona (1), (2) por aí fora;

2. Pois, isso eu sei que há um problema e não sei se notaste mas eu referi a barra de progresso no 1º post, nas observações. Um problema que surge é que a janela faz um "Freeze" enquanto está a comprimir e mesmo que eu queira por uma progressbar em "andamento" ela não me vai funcionar.. 🙂 ;

3. Parece-me bem;

4. Mas quando o utilizador clicar em "Comprimir Attacher .NET" automaticamente tem de abrir a pasta com o devido ficheiro, é isso que estás a querer dizer?

Depende da pasta onde estejas. Por exemplo, supõe que eu quero comprimir os ficheiros da seguinte pasta:

c:\users\André\documentos\que\seca\de\caminho\tenho\de\carregar\em\tantas\pastas\para\la\chegar\ufa\cheguei\

e eu já a tenho aberta, porque estou lá a trabalhar. Era mais fácil a tua aplicação permitir que eu os arrastasse directamente para lá, em vez de percorrer todo esse caminho. Ou então, em alternativa, também podes usar a sugestão dos menus de contexto.

Também me parece bem. Nada que uma procura no google não resolva  😄

Link to comment
Share on other sites

2. Pois, isso eu sei que há um problema e não sei se notaste mas eu referi a barra de progresso no 1º post, nas observações. Um problema que surge é que a janela faz um "Freeze" enquanto está a comprimir e mesmo que eu queira por uma progressbar em "andamento" ela não me vai funcionar.. 🙂 ;

Desculpa, escapou-me, realmente já tinhas falado nisso. Vais ter de usar threads para isso, ou simplesmente um backgroundworker

http://wiki.portugal-a-programar.pt/dev_net:vb.net:backgroundworkers

4. Mas quando o utilizador clicar em "Comprimir Attacher .NET" automaticamente tem de abrir a pasta com o devido ficheiro, é isso que estás a querer dizer?

Tanto faz. A ideia é automatizar a tarefa de escolher os ficheiros. Um caso de uso:

Tenho dois ficheiros no meu desktop e quero colocá-los num arquivo zip. Selecciono ambos os ficheiros e faço clique com o botão direito. Algures nesse menu de contexto, aparece-me uma opção "Zip with Attacher .Net" ou semelhante.

A partir daí, podes escolher se o programa adiciona logo os ficheiros e cria logo o zip, ou se só adiciona os ficheiros à lista de espera e depois aguarda que o utilizador inicie a operação de arquivo.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Boas, experimentei agora a tua aplicação e nota-se que ainda é muito básica, mas como já disseram tens muita coisa que podias adicionar para melhorar a aplicação, e certamente que o vais fazer.  😄

deixo também umas sugestões...dentro dos ficheiros zip fica um ficheiro chamado [Content_Types].xml, acho que não faz la falta  😛

No tamanho total dos ficheiros tem X,XXMB's, podias determinar automaticamente se o tamanho total era KB, MB ou GB.

Outra coisinha é que o tamanho dos ficheiros comprimidos ficou maior do tamanho dos ficheiros normais...  ?

cumps e bom trabalho  🙂

Link to comment
Share on other sites

Desculpa, escapou-me, realmente já tinhas falado nisso. Vais ter de usar threads para isso, ou simplesmente um backgroundworker

http://wiki.portugal-a-programar.pt/dev_net:vb.net:backgroundworkers

Estou a trabalhar com threads e já tenho algo +/- a funcionar (em relação às progressbars)

Tanto faz. A ideia é automatizar a tarefa de escolher os ficheiros. Um caso de uso:

Tenho dois ficheiros no meu desktop e quero colocá-los num arquivo zip. Selecciono ambos os ficheiros e faço clique com o botão direito. Algures nesse menu de contexto, aparece-me uma opção "Zip with Attacher .Net" ou semelhante.

A partir daí, podes escolher se o programa adiciona logo os ficheiros e cria logo o zip, ou se só adiciona os ficheiros à lista de espera e depois aguarda que o utilizador inicie a operação de arquivo.

Concordo. Quando terminar a aplicação no essencial passo para esses pormenores importantes.  🙂

Boas, experimentei agora a tua aplicação e nota-se que ainda é muito básica, mas como já disseram tens muita coisa que podias adicionar para melhorar a aplicação, e certamente que o vais fazer.  🙂

deixo também umas sugestões...dentro dos ficheiros zip fica um ficheiro chamado [Content_Types].xml, acho que não faz la falta  😄

Viva,

Sim, já estou a fazer umas alterações.

Em relação ao [Content_Types].xml infelizmente não é possível contornar esse problema com os códigos que eu estava a usar. No entanto, já optei por outros métodos e parece-me que ele deixou de aparecer.

No tamanho total dos ficheiros tem X,XXMB's, podias determinar automaticamente se o tamanho total era KB, MB ou GB.

Parece-me bem. Um siples Select Case resolveria isso.

Outra coisinha é que o tamanho dos ficheiros comprimidos ficou maior do tamanho dos ficheiros normais...  ?

Tenho de ver melhor.

Obrigado a ambos  😛

Link to comment
Share on other sites

Actualização: Última Versão: 1.1

Alterações:

[*]Opção "Add Folder" disponível;

[*]Disponível adicionar pastas e ficheiros ao mesmo tempo;

[*]Barras de progresso enquanto os ficheiros são zippados;

[*]Eliminado o ficheiro [Content_xml] que era auto-imposto pela aplicação ao zippar;

[*]Determina o tamanho total do ficheiro (KBs, MBs, GBs);

[*]About actualizado.

Download: http://www.mediafire.com/?fcag0d19tv187ls

Screenshot:

http://img337.imageshack.us/img337/7989/semttulogd.jpg
Link to comment
Share on other sites

🙂

"My bad" Não conhecia esse método. 😛

LoL realmente esse método é mesmo "bad"  😄

Já experimentei a nova versão e já deu para ver várias melhorias, principalmente na parte da compressão.

sugestão: quando se adiciona pastas, na coluna Nome ficava melhor aparecer só o nome da pasta e não o seu caminho completo.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.