Alternate Operating System Scanner

What is PC Tools’ Alternate Operating System Scanner?

Once a system is infected with malware it becomes difficult to remove that malware as it is already embedded in the system and has control over many components which are key to the system’s operations. Malware, like rootkits, use system components to hide themselves and prevent other software from detecting or removing them. This is often the case of who gets there first; if the malware is able to get control of the system earlier on then it also has control over any software that may be run later. Besides just hiding, malware can also block the execution of other security applications. If you cannot install or run a security application in the first place then you cannot scan and detect the malware. The best time to remove this malware is when it is not running, but malware often starts with the Operating System, so we would have to stop the Operating System to stop the malware. On a shutdown OS nothing is running and malware like rootkits cannot hide themselves and so it would be easy to find and remove them.

REMnux

REMnux is a lightweight Linux distribution for assisting malware analysts with reverse-engineering malicious software. The distribution is based on Ubuntu and is maintained by Lenny Zeltser.

John H. Sawyer March 22, 2012

In my last blog about Linux Live Environments, I mentioned REMnux, an environment specifically built for malware analysis. I’d spent a little time with REMnux when it first came out, but decided to take the latest version (3.0) for a test drive.

Since I just received the new “Practical Malware Analysis” book from No Starch Press, the detailed lab exercises seemed like a perfect way to test out the tools included in REMnux. While most of the tools in the book are Windows-based, there are Linux-based equivalents found on REMnux.

The first task was downloading the lab files linked from http://practicalmalwareanalysis.com/labs and extracting them.

If you have issues try https://sourceforge.net/projects/labs-encryptzip/ for an encrypted zip download.

WARNING: The lab binaries contain malicious code and you should not install or run these programs without first setting up a safe environment.

Compatibility: The labs are targeted for the Microsoft Windows XP operating system. Many of the labs work on newer versions of Windows, but some of them will not. The labs are designed to mimic realistic malware. Some of them are well-written code that runs reliable and some of them (just like real malware) are poorly written code that may crash, contain memory leaks, or otherwise behave unexpectedly.

Practical Malware Analysis Labs Web Site

My plan to solely use REMnux was immediately thwarted by the self-extracting Windows executable that contained the lab files. There was a EULA (end user license agreement) wrapper as part of the executable that had to be accepted before the files could be extracted — a problem solved with a quick boot of a Windows XP virtual machine. Ideally, the authors will replace or supplement the self-extracting executable with a standard zip file.

After a quick and easy read through the first few chapters, I started to dig into the lab examples using REMnux’s tools. Chapter 1’s labs want you to upload the example binaries to VirusTotal to see whether any antivirus products detect them as possible malware. While I could have used Firefox to upload the files, I chose to use pyew’s “vt” plugin that searches VirusTotal using the MD5 hash of the file instead of uploading the actual file.

Searching just using the MD5 could have backfired if no one had uploaded the file to VirusTotal yet, but given the popularity of the book, the lab files had already been uploaded many times. It doesn’t appear that REMnux currently comes with a command-line tool to upload files to VirusTotal, so here are a couple of options (#1 and #2) that simply require that you get a free API key from VT first.

A few other tasks in the first few “Practical Malware Analysis” labs include looking at executables’ import/export functions, compile date, and packer identification. Pescanner works pretty well to figuring out those answers, but not all of them. For example, pescanner identifies suspicious import functions but does not list them all, and it incorrectly identified some of the executables as having been packed when they weren’t. Pyew faired better by being able to list all imports and exports and correctly identifying the packer, but it did not have an obvious way to show the compile date. But when used together, you can get the exact answers you need.

The last lab in Chapter 1 asks you to use Resource Hacker to look for resources that are stored in the file. To accomplish the same task on Linux, a command-line tool can be used called hachoir-subfile. Running hachoir-subfile against the Lab 1-4 executable will extract the embedded in PE file.

I’m looking forward to digging into the book more and using REMnux further to see just what I can do without having a Windows virtual machine. It’s not that I have anything against Windows — I just like to find alternative Linux-based tools that do the same thing as Windows-based tools. There’s definitely an advantage to having both platforms available for analysis with the plethora of tools to use.

I highly recommend taking a look at the “Practical Malware Analysis” if you’re interested in the topic, as it is one of the best books I’ve seen on subject and the labs are great. I suspect I’ll have more blogs in the future about the book and tools as I spend more time with it and find alternative tools to use for the analysis.

John Sawyer is a Senior Security Analyst with InGuardians. The views and opinions expressed in this blog are his own and do not represent the views and opinions of his employer. He can be reached at johnhsawyer@gmail.com and found on Twitter @johnhsawyer.

 

La reutilización de código

Ahora, como antes, más que antes, como siempre, la reutilización de código se presenta como un valor fundamental en el desarrollo de sistemas. Uno de sus aspectos es la interoperabilidad de los códigos. Por decirlo de alguna manera, la compatibilidad de una aplicación con diferentes versiones de un sistema operativo y con diferentes sistemas operativos.

Por un lado Microsoft, por otro los demás. El imperio contra los rebeldes republicanos y los feudos vecinos. Pero dentro del mismo imperio se hablan distintas lenguas y los rebeldes tienen diferentes agendas.

Una aplicación que trabaja en Windows 95 no necesariamente funciona en Windows XP, Visual Basic 6 y Visual Basic .Net son animales distintos. Una aplicación Linux que funciona en la distribución Red Hat no necesariamente funciona en la distribución SuSe. La frase platform independent source en la practica marca una prueba de iniciación para hechiceros.

En el caso de Microsoft, algunas de estas incompatibilidades son de origen mercadológico. ¿Cuál es la diferencia entre Windows XP Home Edition y Windows XP Pro? Limitaciones artificiales en la versión casera con respecto a la versión profesional. Desde el punto de vista de Microsoft este modelo funciona, Vista no tiene 2 versiones distintas sino n, cada una definida por un segmento de mercado. Las utilidades de MS aumentaron 65% con respecto al año pasado y podemos esperar más de lo mismo por lo menos en el corto plazo.

En el caso del movimiento Open Source las incompatibilidades son de origen sociocultural. Distintos grupos trabajan con combinaciones distintas de herramientas y enfoques metodológicos. Estos herramentales se yuxtaponen unos con otros y las combinaciones son infinitas. La versión de gcc pude ser la diferencia clave para que un paquete se construya correctamente.

Una iniciativa que no termino de entender es Mono. El concepto es bueno, pero ya va un par de veces que trato de construir una aplicación .Net para fallar miserablemente. Al revisar la letra chiquita del readme aparece que la aplicación es Mono ¿Cuál es el caso de incluir archivos de solución y proyecto de Visual Studio si VS no puede construir la aplicación? ¿Si se requiere reproducir el ambiente de trabajo del desarrollador con librerí­as y variables de entorno porque no documentar esas dependencias? Entiendo que son pecadillos del bien intencionado pero se me escapa la motivación fundamental del chango.

http://www.go-mono.com/docs/
http://www.codeproject.com/cpnet/hellomono.asp

Un aspecto problemático del desarrollo í­nter plataforma son las interfaces graficas de usuario (GUI). Cada sistema operativo tiene su look-and-feel caracterí­stico y el manejo eficiente de ventanas requiere el uso del API nativo correspondiente.

Un enfoque que se puede tomar es agregar una capa intermedia entre la aplicación y el sistema operativo que abstraiga la interacción entre la capa lógica y la interfase grafica a cambio de una penalización en el rendimiento. Algunos problemas que se pueden presentar con librerí­as de este tipo:

  • El uso de una capa intermedia adicional disminuye el rendimiento de la aplicación.
  • La librerí­a necesaria para soportar la funcionalidad adicional de múltiples sistemas operativos aumenta le tamaño de las aplicaciones más alla de lo que se justifica con la funcionalidad de la aplicación misma. Por lo mismo el soporte para plataforma móvil no es adecuado
  • La apariencia de la aplicación no corresponde a la de una aplicación nativa y los diálogos son distintos a los que los usuarios usan normalmente.
  • La necesidad de definir un mí­nimo común denominador hace que se pierda la oportunidad de usar las características más avanzadas de un sistema operativo en particular.
  • El uso de librerí­as fuera de la esfera de influencia del sistema operativo anfitrión saca a la aplicación del ciclo de vida del mismo y dificulta el proceso de mantener alineadas las actualizaciones de la aplicación con cambios en el sistema operativo.

La tabla siguiente muestra un comparativo de librerí­as para desarrollo ínter plataforma.

Liberarí­a Tamaño (MB) Tamaño comprimido (MB)
Java 30+ 15
GTK+ 9+ 4
QT 4+ 2
wxWidgets <1 <.5

Java es una norma abierta que funciona bien como propuesta í­nter plataforma. La maquina virtual de java (JVM) aísla la aplicación del sistema operativo anfitrión y esta disponible normalmente en todas partes. Sin embargo las aplicaciones de java tienden a ser chupa recursos. Si revisas los procesos en una estación XP con Firefox instalado, Firefox es normalmente el campeón en memoria utilizada.

GTK+ es un grupo importante de bibliotecas o rutinas para desarrollar interfaces gráficas de usuario (GUI) para principalmente los entornos gráficos GNOME, XFCE y ROX de sistemas Linux. GTK+ es la abreviatura de GIMP toolkit (conjunto de rutinas para GIMP). Es software libre (bajo la licencia LGPL), multiplataforma y parte importante del proyecto GNU. Inicialmente fue creado para desarrollar el programa de manejo de imágenes GIMP, sin embargo actualmente es muy usada por muchos otros programas en los sistemas GNU/Linux. Cabe mencionar que Qt es una alternativa a GTK que también es muy utilizada (en el entorno KDE, por ejemplo).

GTK+ se ha diseñado para permitir programar con lenguajes como C, C++, Java (Sun), Perl o Python.

GTK ha sido portada a Windows pero el look-and-feel no es nativo.

Qt es una biblioteca multiplataforma para desarrollar interfaces gráficas de usuario. Fue creada por la compañía noruega Trolltech. Qt es utilizada en KDE, un entorno de escritorio para sistemas como GNU/Linux o FreeBSD, entre otros. Utiliza el lenguaje de programación C++ de forma nativa y además existen bindings para C, Python (PyQt), Java (Qt Jambi), Perl (PerlQt) y Ruby (QtRuby) entre otros. El API de la biblioteca cuenta con métodos para acceder a bases de datos mediante SQL, así­ como uso de XML y una multitud de otros para el manejo de ficheros, además de estructuras de datos tradicionales. Inicialmente Qt apareció como biblioteca desarrollada por Trolltech (en aquel momento “Quasar Technologies”) en 1992 siguiendo un desarrollo basado en el código abierto, pero no libre. Se usó activamente en el desarrollo del escritorio KDE (entre 1996 y 1998), con un notable éxito y rápida expansión.

Qt cuenta actualmente con un sistema de doble licencia: una GPL para el desarrollo de software de código abierto (open source) y software libre, y otra de pago para el desarrollo de aplicaciones comerciales. Las librerí­as Qt son también liberadas bajo licencia GPL para Windows y Mac.

wxWidgets son unas bibliotecas multiplataforma, freeware/Open Source para el desarrollo de interfaces gráficas programadas en lenguaje C++. Es una librería pequeña que encapsula en una interfase común llamadas al API nativo de cada sistema operativo.

wxWidgets usan una licencia GPL, concretamente la licencia L-GPL, similar a la GPL con la excepción de que el código binario producido por el usuario a partir de ellas, puede ser propietario, permitiendo desarrollar aplicaciones empresariales sin coste.

Las WxWidgets proporcionan una interfaz gráfica basada en las bibliotecas ya existentes en el sistema (nativas), con lo que se integran de forma óptima y resultan muy portables entre distintos sistemas operativos. Están disponibles para Windows, MacOS, UNIX/Linux, OpenVMS y OS/2. También pueden ser utilizadas desde otros lenguajes de programación, aparte del C++: Java, Javascript, Perl, Python, Smalltalk, Ruby

Eclipse C/C++ Development Toolkit (CDT)

Eclipse is an Integrated Development Environment or IDE. The Eclipse was originally created by IBM, but the Eclipse Foundation has since taken over direction and development of the project. Eclipse started out as a Java IDE, but has since grown into much more.

C/C++ development with the Eclipse Platform

This article, which is a follow-up to “C/C++ development with the Eclipse Platform,” is intended for C++ developers who want to learn C++ development using the Eclipse CDT. A simple C++ application is developed in the article. The application makes use of the C++ STL. Readers should be familiar with the STL, as well as with basic object-oriented programming principles such as inheritance and polymorphism. A familiarity with Eclipse will be helpful, but is not required.

HOW TO: Use CDT and MinGW for Eclipse (i.e. develop C/C++ applications in windows)

 

 

Paso 1:

Bajar de mingw.org lo siguiente:

Paso 2:

Extraer los archivos al directorio c:mingw y instalar mingw32-make-3.80.0-3.exe en c:mingw.

Paso 3:

Agregar c:mingwbin a la variable de ambiente de sistema Paths. Verificar con el comando gcc -v .

Paso 4:

Descargar Eclipse e instalarlo.

Paso 5:

Instalar C/C++ Development Toolkit (CDT) usando el menú de actualización Help-> Software Updates -> Find and Install -> Search for new Features to Install.

Paso 6:

Crear un proyecto nuevo file->new ->Managed Make C Project.

Paso 7:

 

Agregar el archivo main.cc con el siguiente código (para probar la instalación):

#include
#include
using namespace std;

int main()
{
string yourName;

cout << “Enter your name: “;
cin >> yourName;
cout << “Hello ” + yourName << endl;
return 0;
}

 

gpg4usb

To say it straight in only one sentence: gpg4usb is a very easy to use portable-application, which combines a simple text-editor with a GnuPG-frontend to write, encrypt and decrypt your text-messages and files. gpg4usb should work on almost any computer you’re working on, should it be a Linux-machine or even one with a Microsoft-OS running.

Almost the only thing required is an available usb-port you are allowed to access. With this application you can write safe and encrypted messages anywhere you are: should it be an internet-cafe, at work or somewhere else on holiday… and you always have the encryption-keys available for usage!

The usage of gpg4usb should be highly self-describing, since the user-interface and all the options it offers are clear cut: Simply execute the binary on your usb-pendrive and start typing e.g. the Mailtext you want to be encrypted. If you’re done, choose the right gpg/pgp-key for the person you are writing to and hit the encrypt-icon at the top of the application-window. The resulting encrypted text you can save as a text-file to send it as mail-attachment, or copy it directly into your mail-user-agent or webmail-website. To make sure, you can read this message by yourself afterwards, encrypt it for the recipient and to yourself at the same time – if you want, you can mark as much keys as you want to encrypt for.

You want to add a gpg/pgp-key to your mobile keyring? Nothing’s easier than that: just hit the crypto-menue-entry and choose Import Key from File or Import Key from Editor. This means that it’s possible to import an ascii-armored pubkey via file-dialog, or via copy&paste into your editor-window. If you find a key e.g. on a website, just copy it, paste it into the gpg4usb-editor and hit Import Key from Editor – that’s it, and the key shows up on your keyring!

Pasted from <http://gpg4usb.cpunk.de/about.html>

Download

You can get our latest Release v0.3.2 by clicking the download link below. Since v0.2.4 the included executables are upx-compressed by default.

Filename Size* sha1
gpg4usb-0.3.2-1.zip 14.8MB / 18.6MB efeeaeff2883ded6abfe6378113c219e5e897bb0

* Size zipped / unzipped

Just download the zip-File and unzip it onto your usb-pendrive. Then simply change into the folder gpg4usb at your usb-drive, and execute the binary in there:

start_linux or start_windows.exe – should be easy to determine, which one’s yours 😉

Since gpg4usb is free software, licensed under the GNU General Public License (GPL), you can use it on as many machines as you want. Copy it, modify and redistribute it, give gpg4usb to as many people as possible! 

Pasted from <http://gpg4usb.cpunk.de/download.html>

Poner eñes y tildes

Ya pues otra vez recurriendo al aprendizaje… vale la plena encontrarse este tipo de introducciones cuando lo que se busca, es la ñ, á, Á

Todos los que se han enfrentado a un ordenador extranjero han tenido el mismo problema: ¿Cómo puedo evitar que el receptor crea que tengo varios esfínteres fecales cuando en realidad lo que pretendo es expresar mi edad? Pues bien, he aquí un tratado elemental para evitar ese malentendido, así como otros muchos derivados de la falta de eñes, tildes, interrogaciones, exclamaciones y diéresis en teclados extranjeros:

WINDOWS
– Tilde: Alt Gr + vocal (alternativamente, Ctrl + Alt + vocal)
– ñ: Alt + 164 en el teclado numérico

Además:
– Ñ: Alt + 165
– ¡: Alt + 173
– ¿: Alt + 168
– ü: Alt + 129
– Ü: Alt + 154

Ya sé que aprenderse todos esos numerajos es un rollo patatero, pero en realidad con el 164 de la eñe minúscula basta, ya que el resto no se usan ni tres veces al año. Y para esas veces no les cuesta nada volver a visitar esta página!
* Nota para portátiles: Para activar el teclado numérico (que en los portátiles está escondido entre las teclas de la derecha del teclado) hay que presionar la tecla Fn. Así, para conseguir la Ñ combinaremos Fn + Alt + 165, y con las demás igual. Esto no siempre es efectivo, porque dependiendo del programa que estemos usando pudiera ser que llamemos a otra función distinta. En ese caso:
* Alternativamente podemos cambiar la configuración del teclado, para ello tenemos que abrir la configuración de idioma pinchando en “Start => Contol panel => Regional and Language settings” y seleccionar España o el país que queramos. Después, es cada ventana en la que vayamos a escribir hay que pinchar abajo a la derecha, donde dice “EN”, y seleccionar “español”. Ahora el teclado será español, por lo que hay que andarse con ojo porque las teclas no corresponderán con lo que dicen, pero podremos lograr la Ñ con la tecla del punto y coma, al lado de la L.

MAC
– Tilde: Option + E, y luego la vocal
– Ñ: Option + N, y N otra vez
– ¡: Option + 1 (o la tecla donde esté el !)
– ¿: No hay método rápido. Hay que abrir el “Character Palette” pinchando en la banderita de país de arriba a la derecha y luego “Show Character Palette”.

UBUNTU
En el panel superior, vayan a
System > Preferences > Keyboard > Layouts > Layout Options > Composite Key Position.
Ahí elijan la tecla “compuesta”, por ejemplo Alt Gr. Luego simplemente escriban combinaciones de tres teclas

, ‘ , a = á 
, ~ , n = ñ 
, ” , u = ü 
, ? , ? = ¿ 
, c , o = © 
, e , + + = €

Windows 8

Seattle.- A medida que Microsoft Corp se prepara para demostrar al mundo lo que su nuevo Windows 8 puede hacer para la próxima generación de tabletas de alta potencia, las revisiones iniciales del nuevo sistema operativo en el hardware existente resaltan los desafíos que enfrenta la compañía con el nuevo diseño radical de su producto insignia.

La mayor compañía de software del mundo dice que millones de personas ya están utilizando una versión preliminar que descargaron de Windows 8 en sus Pcs, laptos y dispositivos táctiles antes de su introducción oficial este otoño boreal.

En un evento mediático en Los Angeles el lunes, la compañía tiene previsto discutir sus planes de superar al iPad de Apple Inc esta temporada de compras de fin de año.

Hasta el momento, la mayor parte de los críticos han elogiado el aspecto de estilo amigable táctil “Metro” de Windows 8, que está basado en coloridos cuadrados, o mosaicos, que representan aplicaciones como correo electrónico y actualizaciones en tiempo real. Pero también han resaltado lo difícil que será para los usuarios alejarse de lo que ya conocen y confían.

Es como una cierta lucha para la gente que está deliberadamente orientada a una PC, que está acostumbrada al mouse”, dijo el ex estratega de Microsoft Al Hilwa.

Hilwa, ahora un analista en la empresa de investigación tecnológica IDC, ha estado probando durante dos semanas la última muestra de la versión. “Sin la pantalla táctil, luchaba con un mouse para hacer ciertas cosas”, dijo.

La nueva interfaz Metro solo ejecuta programas diseñados para ella, por lo que los usuarios deben volver a sus tradicionales computadoras de escritorio para realizar ciertas tareas, tales como escuchar música en iTunes de Apple.

“Lo que realmente me enfurece es que las aplicaciones Metro y las aplicaciones que se ejecutan en las computadoras de escritorio no están al tanto de la existencia de la otra”, dijo el analista de Forrester Research David Johnson. “No existe una forma fácil de navegar entre ellas, no estoy muy seguro a qué se debe”.

La última versión de la prueba del software aún no está concluida. Y aparte de unos pocos examinadores de la industria, nadie ha probado a Windows 8 en una tableta impulsada por los ultra eficientes chips de ARM Holdings, que es lo más cerca que Microsoft se aproximará para desafiar al iPad.

Microsoft debe ofrecer más detalles el lunes, y existen rumores de que podría introducir una tableta con su propia marca. La compañía se negó a hacer comentarios respecto a la reacción al nuevo sistema y sobre sus planes para el evento del lunes.

No obstante, Microsoft no ha logrado convencer aún a algunos de sus usuarios más leales.

“En este momento, no me han comprado”, dijo el analista Michael Cherry de Directions on Microsoft, una empresa de investigación independiente que se enfoca en el gigante tecnológico.

Cherry dijo que había insistido con Windows 8 durante algunos días, pero que tuvo problemas para configurar el correo electrónico en su máquina de prueba.

“No puedo confiar en ella como una herramienta de producción”, dijo. “Aún no me puedo cambiar. Para este momento, debería haber sido capaz de dejar atrás a Windows 7”.

Cherry, un ex gerente de programas de Microsoft, dice que le preocupa que la complejidad inicial del nuevo sistema le impida ser un éxito inmediato, como su predecesor, Windows 7.

“Si una persona que ha utilizado Windows a partir de Windows 1.0 no lo puede entender, entonces imagino que hay otras personas ahí afuera que no lo podrán entender”, dijo. “No veremos las largas filas en las tiendas Best Buy a medianoche. Me encantaría ver eso, pero simplemente no sucederá”.

Los principales críticos tecnológicos como Walt Mossberg de Wall Street Journal o David Pogue del New York Times no han expresado aún su opinión respecto al tercer y último “anticipo” de Windows 8, disponible libremente en internet el 31 de mayo.

El puñado de comentarios en los blogs centrados en tecnología en general elogiaron el nuevo aspecto de Windows 8, pero prácticamente cada uno ha resaltado lo difícil que será para los usuarios hacer el cambio.

“No podría dar a mi madre -que tiene 76 años- Windows 8 y esperar que sea productiva con el sistema”, dijo Johnson de Forrester. “Pero tampoco estoy seguro de que alguien de 30, o incluso 20 años, no se confundirá inicialmente con la interfaz de Metro”.

Los consumidores individuales y potenciales compradores del iPad, más que clientes corporativos, son el objetivo principal de Windows 8. Muchas grandes compañías se encuentran aún en el proceso de gastar millones de dólares para cambiarse a Windows 7.

apr

Windows 8

Seattle.- A medida que Microsoft Corp se prepara para demostrar al mundo lo que su nuevo Windows 8 puede hacer para la próxima generación de tabletas de alta potencia, las revisiones iniciales del nuevo sistema operativo en el hardware existente resa…

Seattle.- A medida que Microsoft Corp se prepara para demostrar al mundo lo que su nuevo Windows 8 puede hacer para la próxima generación de tabletas de alta potencia, las revisiones iniciales del nuevo sistema operativo en el hardware existente resaltan los desafíos que enfrenta la compañía con el nuevo diseño radical de su producto insignia.

La mayor compañía de software del mundo dice que

.NET Compact Framework 2.0

OpenNETCF.org es un repositorio de información y código fuente sobre Microsoft .NET Compact Framework. OpenNETCF.org empezó como un proyecto de código abierto para extender la funcionalidad de .Net 1.x. A partir del Smart Device Framework 2.0 el código fuente dejo de ser libre.

En el mismo sito de Microsoft hay referencias a ejemplos de aplicaciones móviles que usan las extensiones de OpenNETCF.

El articulo Building a Wi-Fi Discovery Application with the .NET Compact Framework 2.0 explica a detalle una aplicación que usa estas librerías e incluye código fuente. Es un buen ejemplo para empezar a ver el ciclo complete de una aplicación móvil no trivial.

La solución de muestra incluye dos proyectos. La aplicación en si, y el código fuente OpenNETCF referenciado en la misma. Al construir la solución en Visual Studio 2005 se marcan warnings pero los proyectos se construyen con éxito. Se puede probar la aplicación en una Pocket PC 2003. Si la tarjetea de WiFi esta desactivada la aplicación genera una excepción. No es una aplicación de grado comercial pero es una buena referencia de lo que se puede hacer.

El articulo Deploying .NET Compact Framework 2.0 Applications with .cab and .msi Files continua con este ejemplo y explica como hacer un proyecto de instalación.

En un proyecto para aplicaciones inteligentes, cada archivo se marca con una acción de generación que se define en la ventana Propiedades del modo siguiente:

  • Un archivo marcado como Compile, valor predeterminado para todos los archivos y formularios de código, compilará los archivos en el ensamblado resultante.
  • Un archivo marcado como Content permite el empaquetado del archivo en el archivo .cab y su implementación en el proyecto. Asimismo, resulta útil para la implementación de archivos de configuración XML y bases de datos SQL Server CE.
  • Un archivo marcado como None simplemente se ignora. Esta acción resulta útil para incluir documentación en el proyecto, como diagramas de Visio que no se deben implementar.
  • Un archivo marcado como Embedded Resource se incluye en el ensamblado ejecutable como un recurso. Esta acción permite que el código escrito extraiga el recurso mediante programación. Asimismo, resulta eficaz para empaquetar imágenes y archivos de secuencias de comandos que se pueden utilizar posteriormente en la aplicación.


Antes de pasar a construir la aplicación para dispositivos inteligentes y crear los archivos .cab para la implementación, no se debe olvidar cambiar el modo de generación del proyecto de depuración a liberación. Esto reducirá el tamaño del ejecutable en el dispositivo (hecho importante en el caso de los dispositivos inteligentes de almacenamiento restringido) y aumentará la velocidad de ejecución.

Para hacer un proyecto de instalación automatica es necesario efectuar los siguientes pasos:

1. Crear archivos .cab para cada dispositivo donde va a correr la aplicación. Un .cab de instalación puede contener un archivo setup.dll con código no administrado, y por eso se requiere un .cab diferente para cada familia de procesadores. Si la aplicación no requiere de este archivo, entonces un solo .cab es suficiente.

2. Agregar los archivos y entradas de registro de la aplicación a los .cab

3. Proveer el código de acciones especiales a ejecutar durante la instalación y desinstalación de la aplicación.

4. Registrar la aplicación con ActiveSync para que se pueda instalar de la PC de escritorio a la Pocket PC.

5. Empacar todo en un archivo .msi

El primer paso es agregar un proyecto
Other Project types->Setup and deployment->Smart Device Cab Project
a la solución.

Al construir el proyecto se generan 3 archivos un .cab, un .log, y un .inf. El archivo .inf tiene parámetros de instalación que serán usados por ActiveSync.

El .cab es suficiente para instalar una aplicación en la Pocket PC pero es posible agregar un proyecto de instalación de escritorio para simplificar el proceso para el usuario.

Para aplicaciones móviles, hay dos cosas que el instalador debe hacer. Debe presentarle al usuario las pantallas del asistente de instalación en la PC de escritorio y debe instalar la aplicación en la Pocket PC.

La instalación en el Pocket PC se hace a través una aplicación llamada CeAppMgr.exe que es parte de ActiveSync. CeAppMgr.exe requires un archivo .ini que se debe agregar manualmente. En nuestro caso el .ini contiene lo siguiente:

[CEAppManager]
Version = 1.0
Component = OpenNETCF WiFiDiscovery

[OpenNETCF WiFiDiscovery]
Description = Sample WiFi Network Discovery Application using the SDF
CabFiles = WiFiDiscovery.cab

Para activar el modo de depuración de CeAppMgr.exe es necesario meterle mano al Registry. Para los valientes

[HKLMSoftwareMicrosoftWindows CE ServicesAppMgr]
“ReportErrors”=dword:1

Existen algunos requerimientos que, aunque no son estrictamente necesarios técnicamente, son prácticas establecidas y necesarias para certificación.

Aplicaciones registradas con CeAppMgr deben estar en un subfolder de ActiveSync por ejemplo. Estos requerimientos los maneja el instalador utilizando variables predefinidas de Windows para mayor flexibilidad y para facilitar localización del software en varios idiomas. Para ejecutar estas acciones se agrega una clase de instalación.

Agregamos un proyecto de librerí­a de Windows a la solución de Visual Studio. A este proyecto le agregamos la installer class. Esta clase soporta eventos relacionados con el proceso de instalación y permite definir acciones previas y posteriores al proceso de instalación y al de desinstalación. Por ejemplo,

public CustomInstaller()
{
InitializeComponent();
this.BeforeInstall +=
new InstallEventHandler(CustomInstaller_BeforeInstall);
this.AfterInstall +=
new InstallEventHandler(CustomInstaller_AfterInstall);
this.BeforeUninstall +=
new InstallEventHandler(CustomInstaller_BeforeUninstall);
}

Es necesario definir constantes para usar dentro del código en términos de entradas en el Registry, bajo la llave HKLM.

De esta manera el código sigue siendo valido bajo distintos idiomas y versiones de Windows.

private const string CEAPPMGR_PATH =
@”SOFTWAREMicrosoftWindowsCurrentVersionApp PathsCEAPPMGR.EXE”;
private const string ACTIVESYNC_INSTALL_PATH =
@”SOFTWAREMicrosoftWindows CE Services”;
private const string INSTALLED_DIR = “InstalledDir”;
private const string CEAPPMGR_EXE_FILE = @”CEAPPMGR.EXE”;
private const string CEAPPMGR_INI_FILE = @”WiFiDiscovery.ini”;
private const string APP_SUBDIR = @”OpenNETCF WiFiDiscovery”;
private string TEMP_PATH =
Environment.SystemDirectory + @”TEMPWiFiDiscovery”;

El ultimo paso es crear el proyecto de instalación.

Other project types ->Setup and deployment->Setup project

Despues de crear el proyecto, realizamos las siguientes acciones:

1. Cambiar el nombre del archivo de salida.

2. Indicar la ubicación de un directorio para guardar archivos temporales. Este direcorio debe estar ubicado de acuerdo a lo que definimos en la clase de instalación.

3. Definir las propiedades del proyecto como compañí­a, nombre de aplicación, etc.

4. Agregar los archivos de salida del proyecto CAB

5. Agregar en la carpeta de aplicación la salida de la clase de instalación

6. Agregar Custom Action usando la clase de instalación

7. Agregar archivo .ini

8. Construir todos los proyectos en la solución

9. Probar el instalador

Para mayor detalle se pueden consultar los articulos originales en el sitio de Microsoft.

El articulo Developing and Deploying Pocket PC Setup Applications aunque obsoleto tiene información complementaria y discute el caso .Net 1.x

Antes de poder ejecutar la aplicación, es preciso instalar .NET Compact Framework en el dispositivo. Si la aplicación requiere SQL Server CE, también será necesario instalar el archivo .cab adecuado. Aunque ambos se instalan automáticamente al implementar la aplicación desde Visual Studio .NET mediante el menú Implementar o al depurar el dispositivo, en producción será necesario emplear un mecanismo diferente.

Como se mencionó anteriormente, los archivos .cab creados para un proyecto no incluyen los archivos .cab correspondientes a .NET Compact Framework o SQL Server CE. Aunque Pocket PC 2003, y dispositivos posteriores, suelen incluir .NET Compact Framework en ROM, será preciso agregar los archivos .cab específicos de la plataforma en cuestión en el caso en que dichos dispositivos no los incluyan. Un modo sencillo de llevar a cabo esta operación para .NET Compact Framework es descargar y ejecutar el redistribuible.

Referencia:

Patrones de implementación para Microsoft .NET Compact Framework