Amigo mío tu que tienes problemas con la instalación/desinstalación de una MSDE (Microsoft SQL Server Desktop Engine) aquí tienes la forma de no “estresarte” demasiado (o no como nosotros, Agustín, Cristina y el que escribe)
Luego de varias horas pudimos dar con la desinstalación manual, entre Agustín y Cristina .
La desinstalación automática nos generaba error, algo fallaba en el instalador .msi… hacíamos un log de la desinstalación pero no nos daba nada.. así que acudimos a la desinstalación manual.
Pasos (que hicimos)
Paso 1: Limpiar .msi (podríamos decir …corrupto)
Primeramente descargamos el conocido Windows Installer CleanUp Utility
Esta opción no desinstala nada, solo nos limpia los archivos que el windows installer coloca en una ubicación temporal para “conocer” cuando hay que desinstalar automáticamente (que en este caso nos generara error, así que no nos servía)
Paso 2: Manualmente eliminar archivos y carpetas
Ubicación predeterminada:
- Instancia predeterminada: \Program Files\Microsoft SQL Server\MSSQL\Data
- Instancia con nombre: \Program Files\Microsoft SQL Server\MSSQL$<INSTANCENAME>\Data
Hay que eliminar tanto Data y Binn
Aqui eliminar toda la carpeta o en ocasiones si existe en Archivos de programa la carpeta “Microsoft SQL Server” no instala
Si necesitas la ubicación y alguien en la instalacion la modifico puedes ir:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup\SQLDataRoot
Mas info aquí
Paso 3: Limpiar “manualmente el registro de windows”
Aqui hay que eliminar una serie de entradas.. que las dejo copiadas pero estan detalladas en Microsoft Support
- Para una instancia predeterminada de MSDE 2000, quite la clave siguiente:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer - Para un MSDE 2000 instancia con nombre, quite la clave siguiente:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<INSTANCENAME> - Si la siguiente clave del Registro señala a MSDE 2000 instancia ProductCode , quite el valor InstanceComponentSet.x . Por ejemplo, InstanceComponentSet.1 tiene un valor que coincide con el código de producto de sqlrun01.msi:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Component Set\InstanceComponentSet.1 - Quite la clave del registro de servicio de SQL Server.
Para una instancia predeterminada de MSDE 2000, quite las siguientes:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer
Para un MSDE 2000 instancia con nombre, quitar las siguientes:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQL$<INSTANCENAME> - Quite la clave de registro de servicio SQLServerAgent:
Para una instancia predeterminada de MSDE 2000, quite las siguientes:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLServerAgent
Para un MSDE 2000 instancia con nombre, quitar las siguientes:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLAgent$<INSTANCENAME>
Mas info de estos pasos: http://support.microsoft.com/kb/320873
Paso 4: Sin reiniciar podremos volver a instalar una instancia.
Instalación con parámetros personalizados:
El .bat que utilizamos:
setup.exe /qb+ SECURITYMODE=SQL DISABLENETWORKPROTOCOLS=0 INSTANCENAME=MINSTANCIA SAPWD=mipassword /log c:\Logsql.log
Mas info de opciones de instalación para MSDE: http://msdn.microsoft.com/es-es/library/aa214935(en-us,SQL.80).aspx
Enlaces
El que esta trabajando con Entity Framework 1.0 (para VS2008 SP1)… sabrá que:
Cuando creamos el modelo las foreign keys las utiliza para crear las relaciones, y mediante propiedades navegar entre ellas. O sea no necesitaríamos las FK para nada, porque es algo que la DB necesita para relaciones (“larga vida a las base de datos relacionales”)
Esta particularidad de no visualizar las claves foráneas me parece muy bueno, ya que no la necesitamos en POO
NOTA Adjunta: en EF 4.0 (que seria la 2.0 pero la versión sigue a la del Framework .NET) al momento de generar el modelo pregunta si queremos “visualizar las foreign keys” :)
A través de una pregunta en los newsgroups y foros (que mas bien me vino por email) necesitaban si o si desesperadamente el identificador de la foránea, así que lo dejo por aquí para referencia.
Pensamiento lateral: (pensando pensando.. en que momento utilizar esto) Se me ocurre cuando estamos visualizando en una pagina ASP.NET y queremos ver el detalle de algo adjunto o enviarlo a una función javascript seria necesario ir a las clave foránea, en vez de traer la entidad relacionada. Caso claro es las grillas donde por alguna razón tenemos que visualizar una imagen asociada y deseamos enviar el id al handler que despliega la misma. (Esto es solo un pensamiento en voz alta)
Veamos lo que necesitamos…
En la DB la tabla que mapeamos…
Si tenemos una entidad relacionada con otras, o sea con una relación de conocimiento (Asociación), nos queda en nuestro modelo
donde podremos apreciar que no se encuentras las claves foráneas
Pero si no puedes dormir sin esta información…
Como lo obtenemos?
Opción recomendada utilizando elegantemente expresiones lambda, y buscamos el nombre de la clave foránea que tanto deseamos:
En VB.NET
Dim tipoPublicidadId As Int32 = Int32.Parse(publicidadArchivo.TipoPublicidadReference.EntityKey.EntityKeyValues.First(Function(k) k.Key = "TipoPublicidadId").Value)
En C#
int tipoPublicidadId = (int)publicidadArchivo.TipoPublicidadReference.EntityKey.EntityKeyValues.First(k => k.Key == "TipoPublicidadId").Value;
Podemos por índice…, algo que nunca me gusto utilizar “índices” (vaya uno a saber en que posición se encuentra la que necesitamos,… pero igualmente va el código
En VB.NET
Dim tipoPublicidadId As Int32
If publicidadArchivo.TipoPublicidadReference.EntityKey IsNot Nothing Then
tipoPublicidadId = Int32.Parse(publicidadArchivo.TipoPublicidadReference.EntityKey.EntityKeyValues(0).Value)
End If
EN C#
int tipoPublicidadId;
if (!IsNothing(publicidadArchivo.TipoPublicidadReference.EntityKey)) {
tipoPublicidadId = Int32.Parse(publicidadArchivo.TipoPublicidadReference.EntityKey.EntityKeyValues(0).Value);
}
Cuando se cargan?
Las asociaciones se cargan y completan cuando hacemos Include en la consulta LINQ to Entities relacionada, o la carga explicita con mediante el método Load
NOTA: Hasta EF 4.0 no tenemos Lazy Load “nativo”.
Enlaces
El lunes pasado aprobé el Examen 70-547 que es sobre desarrollo de aplicaciones web.
El que faltaba para Microsoft Certified Professional Developer (MCPD) en Web Applications
También poniendo semilla “empecemos por casa” del post anterior: Curso Terminado: Becas Control+F Curso .NET 240hs (UTN – FRRe).
Un Testing Center mas cerca…
Lo bueno en esta oportunidad e interesante es que no tuve que viajar hacia Buenos Aires (o Rosario o Córdoba), sino que “cruzando el puente” en Resistencia (Chaco) tenemos un Testing Center de Prometric, nuestros colegas y amigos de Pampa Technologies (PampaTech) (ex MegaKey SRL) solo que esta en el listado de Prometric como el ultimo. Muy buena la atención de Rafael.
Preparación
Para eso durante los últimos días me prepare (además de la experiencia que uno carga en el trabajo, y participaciones en newsgroup/foros) como siempre lo hago mediante el libro del Training Kit del examen.
Que viene con un CD
| MCPD Self-Paced Training Kit (Exam 70-547): Designing and Developing Web-Based Applications Using the Microsoft .NET Framework (Hardcover) http://www.amazon.com/MCPD-Self-Paced-Training-Exam-70-547/dp/0735623406 Puedes darle una mirada interna desde el enlace a Amazon.com Temas: - Application Requirements and Design
- Decompose Specifications for Developers
- Design Evaluation
- Creating a User Interface
- Creating and Choosing Controls
- Data Validation
- Delivering Multimedia
- Component Design
- Component Development
- Reusable Software Components
- Application Logic Layer
- Logging and Monitoring
- Application Configuration
- Define and Evaluate a Testing Strategy
- Creating Development Tests
- Deploying an Application
- Supporting an Application
|
En el libro hay referencias a URL en la mayoría hacia MSDN Library, o artículos de MSDN Magazine.
Lo que me llamo la atención (sabia que era así, pero me hizo pensar) es que las preguntas no eran directas sino mas bien te presenta unos requerimientos y tendrás que elegir entre las diferentes alternativas teniendo en cuenta tu diseño lógico de tu aplicacion, físico, componentes, base de datos, reusabilidad), luego varios preguntas sobre estrategia de testing (unitarios, de integración, stress, etc.)
Fue un examen de sin “pica-código” (como dirían mis amigos españoles) sino mas bien de que “pensamiento exploratorio”, aunque no tan profundo como pensaba (Matías Iacono nos daba un indicio de tranquilidad sobre la profundidad del examen); en la mayoría de las preguntas el sentido común viene a nuestra mente, así que la experiencia también cuenta.
NOTA: Para que que esta pensando que estoy diciendo parte del examen y que es parte del NDA, en el CD adjunto al libro viene una batería de preguntas que ayudan a perfilarse (no son exactamente como el examen, pero ayudan) y allí se perfilan de ese manera.
Enlaces
Hoy termine de dictar 240 horas de clases de .NET (Desarrollo web) en el marco de las Becas Control+F, en los laboratorios de la UTN FRRE
Que son las becas? es una iniciativa de capacitación en tecnologías informáticas organizada por el Ministerio de Trabajo de la Nación (Argentina) en conjunto con CESSI y empresas de primera línea del sector informático
Los chicos…
Jugadores… (arriba) Budimir, Marcos Antonio; Lucero, Ramón Manuel; Martinez, Nicolas Agustin; Clemente Gutierrez, Matias Gaston; Charytonow, Alexis; Pared, Cecilio Antonio; Rodríguez, Jorge Aníbal (atrás de el, Calvo, Facundo); Cáceres, Soledad; Sgrinzi, Agustina; Rodriguez, Nelson Fabian; Galeano Bruschi, Marcos Damián; Borelli, Darío Antonio (abajo) Fernández Michonovich, Iván José; Tribbia, Enzo, (el profe, me!) Fernández, Jose A.; Nicoletti, Mariela Liliana; Barrera, Claudia …(el que falto José Gallardo)
No esta demás decir que uno siempre aprende cosas nuevas cada vez que dicta un curso, muchas veces nuevos conocimientos técnicos (afianzar otros) pero también relaciones humanas, algo que me llevo con creces…
Así que mis mas sinceros saludos a todos, fue un honor nuevamente dar este curso, y espero que nos veamos “en los pasillos de la universidad” (o quien dice en otro curso/jornada)
También a los que estaban detrás de todo en la organización desde le UTN Claudia y Gonzalo, y Gustavo abriendo todos los días el laboratorio.
El curso…
Este curso de .NET se titulaba Programador .NET (mas info aquí) . Se cursaba 3 veces por semana (4 horas), una carga horaria importante, totalizando las 240hs. Se dividió en 3 módulos (Intro a POO, y luego dos módulos de Desarrollo Web con ASP.NET). Los modulos fueron armados por BS – Buffa Sistemas. El ultimo modulo tenia de interesante que se basaba en curso MOC 2310C: Developing Web Applications Using Microsoft Visual Studio 2008 (curso oficial de Microsoft) con material oficial.
Exámenes…
-
- del curso:
Constaba de 3 exámenes (70% para aprobar) pero el ultimo era el integrador.
Al finalizar Microsoft enviara un certificado del curso a cada alumno. - de certificación:
Los alumnos por completar satisfactoriamente el curso tiene acceso a una bonificación (voucher) del 50% en uno de los siguientes exámenes (a elección):
NOTA: Recién me entero por el post ¿Eres estudiante? CERTIFICATE!!!! (Felipe Zuñiga) que a nivel mundial los estudiantes (que puedan acreditar que lo son al momento de rendir) tiene un descuento de 50% (por lo menos en Argentina)
Esto es valido hasta el 30.Jun.2010 (pleno Mundial de Futbol!!)
Mas info: http://www.prometric.com/microsoft/student
Estoy por averiguar (y también Gonzalo) en el marco de Control+F si la bonificación… (que creo la da Microsoft) puede ser un poco mas, conociendo que el beneficio ahora ya no es un “beneficio exclusivo de las becas Control+F”
Aquí voy a llevar un listado de los que van rindiendo el examen de certificación (espero que me se acuerden de mi y vayan avisando con un mensaje/comentario en este articulo)
- Barrera, Claudia
- Borelli, Darío Antonio
- Budimir, Marcos Antonio
- Cáceres, Soledad
- Calvo, Facundo
- Charytonow, Alexis
- Clemente Gutierrez, Matias Gaston
- Fernández Michonovich, Iván José
- Galeano Bruschi, Marcos Damián
- Gallardo, Jose Omar
- Lucero, Ramon Manuel
- Martinez, Nicolas Agustin
- Nicoletti, Mariela Liliana
- Pared, Cecilio Antonio
- Rodríguez, Jorge Aníbal
- Rodriguez, Nelson Fabian
- Sgrinzi, Agustina
- Tribbia, Enzo
Enlaces
La necesidad hace que a veces necesitemos estos “tips”.
En una app web en desarrollo, no teníamos otra forma de acceder a un usuario (ni recuperar el password) así que resolvimos directamente en la DB.
Esto le sirvió a Enzo y Lisando, espero que a alguien le sirva.
Para cambiar el password mediante esta consulta SQL utilizando el procedimiento almacenado…
DECLARE @UserName varchar(256),
@Password varchar(128),
@Application varchar(256),
@PasswordSalt varchar(128)
SET @UserName = 'yoda'
SET @Password = 'theforceiswithyou'
SET @Application = '/'
SET @PasswordSalt = (SELECT 1 PasswordSalt
FROM aspnet_Membership
WHERE UserID IN (SELECT UserID
FROM aspnet_Users U
INNER JOIN aspnet_Applications A
ON U.ApplicationId = A.ApplicationId
WHERE
(U.UserName = @UserName)
AND (A.ApplicationName = @Application)))
EXEC dbo.aspnet_Membership_ResetPassword
@Application,
@UserName,
@Password,
10,
10,
@PasswordSalt,
-5
Es candidato ideal la consulta anterior a encapsularla en un procedimiento almacenado que solamente sea para esa tarea.
Espero que les sirva de ayuda o guía.
Cuando estaba publicando Federico en producción un proyecto (esto quiere decir que esta en etapas finales, hito importante en cualquier proyecto) se le presento el siguiente mensaje ;)
Error:
Error de la validación del estado de vista MAC. Si un clúster o una batería de servidores Web alojan esta aplicación, asegúrese de que la configuración <machineKey> especifica la misma validationKey y el mismo algoritmo de validación. AutoGenerate no se puede utilizar en un clúster.
English…
Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
Si bien al único que le sucedió algo similar hace unos meses era a Ruben, aqui dejo plasmado las soluciones… la primera es la sugerencia del chef! pero por pagina no de todo el sitio
Si quieres puedes tener un seguimiento de todos los issues del view-state que están documentados en Microsoft Support, ademas hay sugerencias de como buscar estos issues:
Porque sucede esto?
Hay varias razones y seguramente (por la Ley de Murphy) la que le ocurre a uno no es nada de este listado, es decir no es un listado definitivo solo algunos tips de sucesos, pero si tienes alguno dímelo a través de un comentario en este articulo
- Si tenemos una granja de servidores web. Donde todas compartan la misma clave para encriptar el viewstate ya que por default la clave es autogenerada. La puedes autogenerar
Aquí nos convendría leer un poco la implementación , mas info:
- Suele suceder también cuando utilizamos la transferencia del contexto con Server.Transfer y la pagina que recibe los datos no puede “leer” los controles (PreviousPage) que no pasan la validación.
Es decir el viewstate encriptado solo puede ser enviado a la misma pagina
- Login? ..también (muchos “tambien”) he dado con este articulo donde luego de instalar NET 3.5 SP1 puedes sufrir este problema.
Esto porque en ASP.NET 3.5 tenemos la propiedad Action en el HTMLForm
- También es posible que suceda cuando utilizamos controles que utilizan DataKeyNames para guardar campos claves (o lo que necesitemos) (Ej: GridView, DetailsView o FormView)
Mas info:
- Cuando paginas “gigantes” (o no) se cargan lentamente… y se le permite al usuario realizar acciones antes de la carga completa.
Aqui la solucion de Tom de deshabilitar el formulario por javascript me gusto por lo sencillo
NOTA: Por favor asegúrate que tu pagina no esta cacheada por el explorador, porque puede ser que se este enviando el viewstate “añejo”, y por eso te este dando este error.
Soluciones
Si es un caso aislado o por ejemplo estas en una intranet que pocos usuarios van a utilizar y no necesitas esa seguridad.. entonces puedes:
Solución 1:
En la pagina que requerimos deshabilitamos este cifrado.
<%@ Page Language=".." EnableViewStateMac="False"%>
Esto es bueno cuando tenemos que enviar el postback hacia otra pagina.
Solución 1.1:
Ídem al anterior pero lo hacemos para todo el sitio desde el web.config.
Esta alternativa hace que nuestra nivel de seguridad disminuya así que a tenerlo en cuenta (si es publico no creo que se conveniente, en cambio en una intranet habría que evaluarlo)
<pages enableViewStateMac="false" />
enableViewStateMac: Atributo Boolean opcional.
Especifica si ASP.NET debe ejecutar un código de autenticación de mensajes (MAC) en el estado de vista de la página cuando el cliente la devuelva. Si el valor es True, se comprueba el estado de vista cifrado para asegurarse de que no se ha manipulado en el cliente.
El valor predeterminado es True.
Mas info sobre esta propiedad sigue el post de Carlos Zanini
Solución 2
<pages viewStateEncryptionMode ="Never" />
viewStateEncryptionMode: Atributo ViewStateEncryptionMode opcional.
Especifica el modo de cifrado del estado de vista. La propiedad ViewStateEncryptionMode reemplaza este atributo, que se establece en el archivo de configuración.
Valores: Always, Auto, Never
El valor predeterminado es Auto
Solución 3
Aqui puede ser que se recicle el Pool de Aplicaciones del IIS asi que la solucion by Microsoft
- Ajústese las configuraciones en los grupo de aplicaciones para que sea menos probable que el reciclaje se produzca en períodos máximos.
- Utilice una clave específica en el machine.config para impedir generación automática de claves a cada inicio de proceso
- Sólo realice el postback a la misma página ASPX
- Desactive servidor de seguridad y software de antivirus
Según leemos aquí:
Enlaces
Espero que les sirva de ayuda o guía.
Cuando necesitamos enviar a una función de mi modelo que esta mapeada a un procedimiento almacenado un parámetro out necesitaremos crear el ObjectParameter, aquí una express mirada por los integrantes de esta obra…
El procedimiento almacenado (PA)
Si tenemos nuestro procedimiento con este parámetro OUT
Nuestra función mapeada en el modelo de Entity Framework
Podemos mapeamos a una función a nuestra entidad y dicha función que sea un PA que devuelva un listado del mismo tipo que la entidad.
Si lo queremos utilizar nos pide convertir en ObjectParameter (que es el objeto de parámetros que utiliza internamente el modelo para mapear valga la redundancia los parámetros, puedes verlo en clase que genera el modelo, TuModelo.Designer)
Bueno, como decía, al utilizarlo no da este precioso mensaje de error:
Creamos el parámetro (no olvidar que ObjectParameter se encuentra en el namespace System.Data.Objects)
paramOutPageTotal = new System.Data.Objects.ObjectParameter("PageTotal", typeof(int));
y para recuperar
paginaPageTotal = Int32.Parse(paramOutPageTotal.Value.ToString());
Quedaría asi:
Enlaces
Nuevamente a raíz de una pregunta que me hicieron que es simple para responder o realizar la tarea, pero aquí quiero navegar en otras soluciones, por eso la dejo plasmada para futuras referencias.
Sea en grupos de noticias relacionados, foros o en la clases de .NET de las Becas Control F se siente (en algunos que vienen de winform sobre todo) la necesidad de esta funcionalidad, y cuando la preguntan quiero expresar todo lo que digo aquí.
Si alguien tiene otra opción, que escriba un comentario por favor entonces agrandamos al oferta :)
Empezamos…
Necesidad: (el titulo del articulo) Visualizar encabezado cuando los datos a enlazar están vacios en un Gridview
Si bien es algo que lo podremos resolver mediante estas dos propiedades
| EmptyDataText |
Obtiene o establece el texto que se mostrará en la fila de datos vacía que se representa cuando un control GridView se enlaza a un origen de datos que no contiene registros.
|
| EmptyDataTemplate |
Obtiene o establece el contenido definido por el usuario para la fila de datos vacía que se representa cuando un control GridView se enlaza a un origen de datos que no contiene registros.
|
Si se establecen las propiedades EmptyDataText y EmptyDataTemplate, la propiedad EmptyDataTemplate tendrá prioridad.
Ya nos contaba por aquí Sergio Tarrillo…
Nota !! CSS Friendly Adapter
Si estas utilizando CSS Friendly Adapter, tienes que tener la ultima versión para que renderice correctamente estas dos propiedades.
Puedes leer este articulo:
A que queremos llegar?
Entonces para llegar a realizar lo que vemos en la siguiente imagen,… que si la consulta no devuelve resultados visualicemos el encabezado del Gridview
Estoy utilizando la base de datos de ejemplo AdventureWorksLT2008 (la puedes descargar por aquí)
Soluciones
- Utilizando EmptyDataText
- Utilizando EmptyDataTemplate
- Manipulando el Datasource, que viene vacio y agregamos una fila “en blanco”
- Extendiendo el Gridview (aquí una elegante solución por Joe Wrobel )
- Utilizando ShowHeaderWhenEmpty (nuevo en ASP.NET 4.0)
Tenemos un ejemplo… para descargar :)
El ejemplo sencillo para poder realizar esta tarea es el siguiente
Las opciones (posibles soluciones) están en este ejemplo, menos la opcion 3 y la 5 que es una propiedad nueva en ASP.NET 4.0 (VS2010 Beta1/2)
Descargar Ejemplo
Click en la imagen o aquí
Exploremos las soluciones…
En esta propiedad solo podremos escribir una cadena:
Se visualiza de esta manera
Podemos introducir HTML, …
Pero imaginemos que querramos introducir el encabezado de esta manera :) no es del todo “agradable para el alma” podremos sufrir demasiado. Si quieres sufrir, sufrí! seria algo así…
<asp:GridView ID="gvProducts" runat="server"
AutoGenerateColumns="False"
DataKeyNames="ProductID"
EmptyDataText="<div class='AspNet-GridView'><table cellpadding='0' cellspacing='0' summary=''><thead><tr><th scope='col'>Name</th>
<th scope='col'>ProductNumber</th><th scope='col'>Color</th><th scope='col'>StandardCost</th><th scope='col'>SellStartDate</th></tr></thead><tbody>
<tr><td colspan='5'>No se encontraron registros.<strong>En negrita.</strong></td></tr></tbody></table></div>"
CSSSelectorClass="YodaGrilla"
DataSourceID="edsProducts">
<Columns>
...
El resultado (si nos va bien en esa “jungla” de HTML) seria
En el ejemplo se encuentra en esta pagina:
Aquí podremos escribir mas fácilmente sin tanto dolor je!, contenido para este momento de no tener datos disponibles en la consulta.
Lo podremos acceder mediante código declarativo
O también mediante el Editor de Plantillas del Gridview
Aquí podremos hacer mas… introducir HTML que sea el encabezado generado cuando hay datos, o sea este HTML
Es decir copiamos el HTML que genera nuestra consulta con datos para copiar con estilos (y mas aun si utilizamos CSS Friendly Adapter).
Esto no es automático, cuando agregamos o modificamos una columna tendremos que realizar esta tarea nuevamente.
Si colocamos dentro del EmptyDataTemplate una tabla bien armada con lo que copiamos anteriormente, quedaria
Esta solución no es muy elegante y no cumple con la filosofía que todo desarrollador debe seguir DRY (Don't repeat yourself), pero lo bueno que no tenemos que escribir código de servidor :)
Nos queda de la siguiente manera cuando los tenemos vacía la consulta de datos
Podremos agregar una fila un poco mas informativa…
En el ejemplo se encuentra en esta pagina:
3 - Manipulando el Datasource, que viene vacio y agregamos una fila “en blanco”
La idea es fácil, si el origen de datos no contiene datos entonces ingresamos un ítem vacio.
Hay que tener en cuento los no nulls o los que contenga un valor por default…
Aquí dejo dos enlaces que le puede ayudar al lector a realizar esta tarea:
4 - Extendiendo el Gridview… la solución elegante
Me baso en la solución propuesta por Joe Wrobel
Como lo dice el mismo una “solución elegante”
El codigo lo dejo en MSDN Code Gallery
Como
protected IEnumerable gvProduct_MustAddARow(IEnumerable data) {
List<Product> listProducts = (List<Product>)data;
listProducts.Add(new Product());
return listProducts;
}
NOTA: EntityDataSource mmm!!
Si trabajamos (como yo en este ejemplo) con un proveedor como EntityDataSource cuando estamos dentro del control y queremos
Y no podremos obtener el listado de nuestros objetos a partir de este EntityDataSourceWrapperCollection
(Si alguien conoce la forma por favor comente en este articulo)
Error:
"No se puede convertir un objeto de tipo 'System.Web.UI.WebControls.EntityDataSourceWrapperCollection' al tipo 'System.Collections.Generic.List`1[AdventureWorksLT2008Model.Product]'."
Así que en este ejemplo podría no utilizar EntityDataSource, pero lo que hice fue generar una lista vacía de Productos (ya que conocemos que tipo de datos se enlazan a esta grilla en particular) y agregarle un producto vacio en el evento MustAddRow de la idea original de Joe Wrobel
//List<Product> listProducts = (List<Product>)data;
List<Product> listProducts = new List<Product>();
listProducts.Add(new Product());
return listProducts;
5 - Utilizando ShowHeaderWhenEmpty del Gridview (solo disponible para ASP.NET 4.0)
Simplemente… algo que vamos tenemos disponible nativamente en ASP.NET 4.0
Y nos olvidamos de todo :) y disfrutamos:
Lo que no encontré todavía fue un ShowFooterWhenEmpty :( pero bueno estamos en la beta 2 de VS2010
Mas info: GridView.ShowHeaderWhenEmpty
Descargar el ejemplo
Click en la imagen o aquí
Enlaces
- GridView.EmptyDataTemplate (Propiedad)
Obtiene o establece el contenido definido por el usuario para la fila de datos vacía que se representa cuando un control GridView se enlaza a un origen de datos que no contiene registros.
- GridView.EmptyDataText (Propiedad)
Obtiene o establece el texto que se mostrará en la fila de datos vacía que se representa cuando un control GridView se enlaza a un origen de datos que no contiene registros.
- GridView.ShowHeaderWhenEmpty (Property) (nuevo en ASP.NET 4.0)
Gets or sets a value that indicates whether the heading of a column in the GridView control is visible when the column has no data.
Prendo mi notebook para mirar una película este domingo 18 de Octubre de 2009 y veo que el horario había cambiado, …me olvide de desactivar que no realice el cambio de horario de verano automáticamente. Lo copio por aquí cual es la simple tarea para que mi hermana y amigos lo puedan realizar correctamente.
Que linda mi Argentina, por el que no sabia el gobierno “decidió” no aplicar el cambio de horario a ultima hora, … para los chicos de infraestructura (servidores, o aplicaciones basadas en sincronización, etc, etc) que el viernes por la noche conocieron el veredicto…
[Actualización Martes 20/Oct/2009] Documento Oficial
Me avisa mi querida novia (porque leyó de un articulo en Infobae)
http://www.microsoft.com/argentina/dst/
Como cambiar la opción en Windows 7 (que ya viene con lo que el gobierno el año pasado decidió aplicar)
Si vemos lo que nos informa nuestra computadora personal…
Para cambiar debemos ir a “Cambiar la configuración de fecha y hora…” y allí
En XP (encontré una imagen por ahí)
Aquí debemos ver que hicimos el año pasado, si aplicamos la configuración de la zona horario o simplemente cambiamos la hora :)
Como no soy del equipo de infraestructura sino mas bien del equipo de desarrollo me puse a investigar todo el dolor y/o sufrimiento accionar que tienen estos chicos el fin de semana ya que la incertidumbre de que si el cambio era efectivo o no.
Luego de leer al Gran Ponicke… que los últimos días estuvieron redactando el documento oficial que esta en este su blog con una referencia especial para usuarios finales (lo cual me gusto encontrar) y por supuesto tambien referencia oficial para Administradores y Usuarios Empresariales
Saludos…
[Actualización Martes 20/Oct/2009] Documento Oficial
Me avisa mi querida novia (porque leyó de un articulo en Infobae)
http://www.microsoft.com/argentina/dst/

(…así comenzaba mi borrador de este blog) Como no tenia antivirus cuando instale Windows 7 llego a mi la beta del Microsoft Security Essentials (parece que antes tenia de codename Morro). Microsoft ya anuncio hace un par de meses su plan de “No-Cost Consumer Security”, el ejemplo a la mano que tenemos es el AVG.
Recordé que hace mas de un año tenia malas impresiones del “One Care” (discontinuado) que duro una semana en mi notebook y lo elimine, mala performance sobre todo. Asi que por esa razón en mi instalación de windows 7 instale la version de Microsoft Security Essentials
Veo que algunos de mis amigos pueden necesitar antivirus, así que dejo aquí algunos tips.
[Actualización 29/09/2009] - Beta users: Upgrade to latest version of Microsoft Security Essentials
Este post lo escribí con la versión beta, pero acabo de leer de post de Jesús Gonzales que podemos descargarnos la versión final
Para descargar la version final: http://www.microsoft.com/security_essentials/default.aspx?mkt=es-es
¿Instalación sin conexión a internet…?
Hay que descargar el instalador… y luego para descargar la actualizaciones aquí en enlace:
… ¿4 Mb?? mmm!
Leo en varios lugares:
“Brian Krebs of The Washington Post found MSE used 4 megabytes of RAM during testing…”
Y la grata sorpresa de que utiliza 4Mb (en la versión beta)? el proceso msseces.exe (Microsoft Security Essentials User Interface)

PERO… esta perdido por ahí un proceso que se llama MSMpEng.exe con 49Mb. (AntiMalware Service Executable)
No soy todavía un trabajador de infraestructura ni servidores, lo mío todavía es el desarrollo de software, pero que solamente es de 4Mb! )que alguien me explique)
Se actualiza por Windows Update.
Se actualizaba hasta antes de instalar la versión final utilizaba 2.9Mb, así que mucho menos…
Ayer mi configuración fue esta:
Algo mas de interfaz con la detección de “algo maligno”… :)

Cuidado de donde descargamos contenido!
Cuidado con de donde descargas contenido!! Leo desde este blog: Microsoft Security Essentials SEO Poisoning
Donde me llevo a esta Alerta:
http://securitylabs.websense.com/content/Alerts/3485.aspx
Con un poco de “envenenamiento SEO” se utiliza para posicionar paginas con contenido malicioso que tengan la misma tematica que las originales, aqui vemos con el Microsoft Security Essentials …
Enlaces
Esta sencilla acción era lo que necesitaba Alexa (desde los newsgroup de ASP.NET)…quien me llevo a escribir este presente post.
Cual es la necesidad (.. de Alexa)??
No necesitaba la “funcionalidad” de redirección que realiza por defecto el Proveedor de Membresia cuando utilizamos la autenticación de formularios, cuando envía a la pagina de Login el parámetro por QueryString de ReturnUrl
Mas info: Flujo de control de autenticación de formularios
Porque por defecto cuando asignamos la seguridad y solicitamos la pagina:
http://www.miempresa.com/principal.aspx
se redirección para la petición de credenciales (user/pass) a la pagina:
http://www.miempresa.com/login.aspx?ReturnUrl=principal.aspx
La solución que recomendé, por no conocer otra posibilidad ;) (escuchamos en los comentarios alguna otra alternativa)
Esto es similar a:
Solución
Al momento de logearse el usuario redireccionar al lugar deseado, esto es el evento LoggedIn
protected void Login1_LoggedIn(object sender, EventArgs e)
{
Response.Redirect("nuevaUbicacion.aspx");
}
para Curiosos…
Para los curiosos con “El Gran Reflector.NET” nos da luz en las sombras, podremos ver como lo obtiene y ver como funciona algunos parámetros
Friend Shared Function GetReturnUrl(ByVal useDefaultIfAbsent As Boolean) As String
FormsAuthentication.Initialize
Dim current As HttpContext = HttpContext.Current
Dim str As String = current.Request.QueryString.Item("ReturnUrl")
If (str Is Nothing) Then
str = current.Request.Form.Item("ReturnUrl")
If ((Not String.IsNullOrEmpty(str) AndAlso Not str.Contains("/")) AndAlso str.Contains("%")) Then
str = HttpUtility.UrlDecode(str)
End If
End If
If ((Not String.IsNullOrEmpty(str) AndAlso Not FormsAuthentication.EnableCrossAppRedirects) AndAlso Not UrlPath.IsPathOnSameServer(str, current.Request.Url)) Then
str = Nothing
End If
If (Not String.IsNullOrEmpty(str) AndAlso CrossSiteScriptingValidation.IsDangerousUrl(str)) Then
Throw New HttpException(SR.GetString("Invalid_redirect_return_url"))
End If
If ((str Is Nothing) AndAlso useDefaultIfAbsent) Then
Return FormsAuthentication.DefaultUrl
End If
Return str
End Function
En C# (para los que no le gusta leer Dim)
internal static string GetReturnUrl(bool useDefaultIfAbsent)
{
Initialize();
HttpContext current = HttpContext.Current;
string str = current.Request.QueryString["ReturnUrl"];
if (str == null)
{
str = current.Request.Form["ReturnUrl"];
if ((!string.IsNullOrEmpty(str) && !str.Contains("/")) && str.Contains("%"))
{
str = HttpUtility.UrlDecode(str);
}
}
if ((!string.IsNullOrEmpty(str) && !EnableCrossAppRedirects) && !UrlPath.IsPathOnSameServer(str, current.Request.Url))
{
str = null;
}
if (!string.IsNullOrEmpty(str) && CrossSiteScriptingValidation.IsDangerousUrl(str))
{
throw new HttpException(SR.GetString("Invalid_redirect_return_url"));
}
if ((str == null) && useDefaultIfAbsent)
{
return DefaultUrl;
}
return str;
}
Enlaces
En estos días volví a manipular un proyecto de ASP 3.0 (Classic ASP) y recordé viejas épocas del código spagetti.
Necesitaba probarlo así que en mi maquina era ejecutarlo desde Windows 7… dejo por aquí los pasos y experiencias.
NOTA: Esto también valido para Windows 2008
Habilitando ASP Clásico
El mensaje de error a la petición de cualquier recurso con la extensión .asp
Error HTTP 404.3 - Not Found
No puede obtener acceso a la página solicitada debido a la configuración de la extensión. Si la página es un script, agregue un controlador. Si se debe cargar el archivo, agregue una asignación MIME.
En IIS7 y IIS7.5 la característica de ASP Clásico no viene instalado por defecto para ello nos vamos a Habilitar el servidor web para hospedar aplicaciones ASP Clásicas
Vamos a Panel de control…
Con esto ya tendremos disponible este característica.. entonces a probar las paginas .asp … si señor sin las “x” al final :)
Mensajes de Error
Luego el error venia con ayuda…
An error occurred on the server when processing the URL. Please contact the system administrator.
If you are the system administrator please click here to find out more about this error.
Pero este error es “generico” para devuelva el erro exacto deberías indicarle que nos envié este error el navegador
Para ello vamos a las características de nuestra aplicación ASP
Luego en las propiedades de depuración indicamos para “Enviar errores al explorador”

Luego ya es historia conocida…
Y esta propiedad?
Enviar errores al explorador [scriptErrorSentToBrowser]: Especifica si el servidor web escribe información de depuración específica (nombre del archivo, error, número de línea, descripción) en el explorador del cliente, además de incluirla en el registro de eventos de IIS. El valor predeterminado es True.
Podremos aplicar esta propiedad ejecutando el siguiente comando en modo administrador:
%windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:true
TIP: Para el usuario limitado de infraestructura como yo el comando appcmd me es un tanto extraño… suerte que tenemos
Espero que les sirva de ayuda o guía.
Enlaces
Algunos de mis amigos y amigas seguro que esto le vendrá muy bien… ya que suelen enviar 3000 mensajes en 3 días ;)
Hay que ver los costos, que los dejo mas abajo. Hagan calculo.
Cual es la idea?
Estar disponible en el MSN y chatear via SMS, sin necesidad de conexión GPRS, Wi-fi, … a puro SMS (mensajes de texto)
-
-
-
-
-
-
-
Empieza a charlar hoy con tus contactos existentes de Windows Live Messenger
-
Cuando aparezcas como inactivo en tu equipo, se enviarán los mensajes entrantes a tu teléfono móvil.
NOTA: Desde ayer (14/Sep/2009) los que tengan su proveedor de Personal ya lo tienen disponible, y parece que en pocas semanas Movistar y Claro lo tendrán también.
Empezamos…
Tendremos que ir a registrarnos a: www.smsmessengerlive.com
Al finalizar los pasos recibiremos ayuda por SMS, alli podremos conectarnos y esperar a que nos “bombardeen de mensajes” nuestros queridos amigos.
Como utilizarlo?
Con mi proveedor de telefonía me envió un numero a donde enviar los comandos
- Iniciar session: Enviar un sms a un numero que lo agende con el texto ON
- Cerrar Session: texto OFF
- Para chatear (via sms) con amigos nos agrega un numero identificatorio para enviar SMS a ese amigo
- y varias palabras claves mas ESTOY/UPDATE seguida del texto que quiero que se visualice, y la conocina AYUDA para cualquier tema
Cuales son los costos?
Para el proveedor de telefonía Personal (Argentina)
http://www.personal.com.ar/smsmessenger/precio.html
Enlaces
Hace un buen tiempo que estamos en la empresa utilizándolo como alternativa visual para el TFS Web Access, mas que nada para las tareas cotidianas y para tener un pantallazo general de los Sprint y el movimiento de tareas.
Como tenia que actualizar la versión la dejo por aquí por si alguien la necesita
NOTA 1: Este post lo tenia guardado en borrador desde el principio de año y como hoy leo de mis fuentes rss el post de Francisco Fagas
NOTA 2: También veo que esta la version 2.4 (Mayo 2009) que trae un par de soluciones a algunos bugs :) … aqui verán los screenshot con la version 2.3
Que es el EPiServer Scrum Dashboard?
(from CodePlex) “…Scrum Dashboard is a web front-end for Conchangos Scrum for Team System version 2. The main goal of this project is to replace the whiteboard and simplify daily work with Scrum artifacts in Team Foundation Server 2008…”
http://scrumdashboard.codeplex.com/
Algo parecido ..
Cuando lo descargamos la release que es un simple .zip tendremos dos carpetas el web y la base de datos (que es un script)
Instalado la DB
Aquí se encuentra el script para crear la DB

Hay que instalarlo en nuestro motor… como es un script simplemente lo ejecutamos desde la master (claro..! con los permisos adecuados para estas tareas)
y ya tendremos la base de datos que utiliza Scrum Dashboard
Instalando la Web
Agregando el directorio virtual.
En nuestro sitio del TFS Web Access debemos agregar un directorio virtual direccionando a una carpeta donde copiaremos el contenido de la web de Scrum Dashboard.
Si estas leyendo este articulo estas familiarizado con directorios virtual sino: Cómo: Crear y configurar directorios virtuales en IIS 5.0 y 6.0
Configurando
Como toda aplicación web hay que darle el toque final con parámetros de unos AppSettings y el ConnectionString.
Que como podemos imaginar serian url de TFSWA, y otros… (tfsServer, tfsWebAccess, tfsWebAccessRelative, tfsReportServer, tfsViewBugsAsProductBacklogs, tfsKeepAlive, WorkItemTrackingCacheRoot)
y funcionando
:( tengo que actualizar a la version 2.4 (Mayo 2009)
El evento se realizará entre el 24 y el 28 de agosto en la Facultad Regional Resistencia de la Universidad Tecnológica Nacional (Chaco - Argentina)
La JUTI es organizada, desde el año 2000, mediante un esfuerzo conjunto del Departamento de Ingeniería en Sistemas de Información y del Centro de Estudiantes Tecnológicos de la UTN-FRRE, y cuenta con la asistencia de docentes, alumnos, graduados de carreras de informática, personal de áreas de sistemas de organismos públicos privados, empresas de telecomunicaciones y desarrollo de sistemas. Hoy en día este evento académico tiene un alcance regional , dado que desde hace más de cinco años contamos con la asistencia de público de Chaco, Corrientes, Formosa y Misiones.
Mas info:
http://www.juti-frre.com.ar/
Cronograma: http://www.juti-frre.com.ar/Cronog.aspx
Inscripción: http://www.juti-frre.com.ar/Logueo.aspx
Vamos a estar presentes facilitando un workshop sobre Scrum con la ayuda de Diego, asi que en la semana les contaremos los detalles… este taller no es abierto sino que previamente hay que inscribirse, ya que tiene un cupo de personas para que sea mas productivo y afianzar los conocimientos.
Aquí les dejo el cronograma para que vean que buenos exponentes tenemos :)

A pedido de mi primo Sebastián aquí la forma de generar un script de nuestra DB desde el Management Studio con objetos y datos.
Cuando termina su proyecto deberá publicarlo, pero el hosting no le brinda acceso directo a la DB sino a través de un interfaz web donde puede ejecutar script, así que el pedido fue expreso: “Como genero el script con datos?”
NOTA: Por aquí en Desarrollos NEA utilizamos MS 2005/2008 pero lo administramos desde el Management Studio 2008 (SSMS).
También en las versiones express podremos realizar esta tarea, o sea con Microsoft SQL Server 2008 Management Studio Express (SSMSE)
Historia…
Hace un par de años utilizábamos con Federico/Humberto (…los sql’s boy) para el SQL 2005/2000 esta herramienta
Luego (del laboratorio de codeplex) se llamo:
Tambien existe una version para publicar mediante webservice directamente en el servidor/hosting pero para eso tiene que instalar el Database Publishing Services , que tiene el release aqui:
Seguro que había otras formas de generar estos scripts, incluso del mismo TS-SQL generando el script “automáticamente” leyendo los objetos, iterando…. (si mal no recuerdo en la universidad nos hacían hacer un trabajo parecido)
Desde el Management Studio 2008
Ahora podemos agregar datos al script… sin descargar nada :)
Mas info de como generar el script por aquí, pero dejo las imágenes…
Por default la opción de incluir los datos no esta habilitado… así que a cambiarlo
Los objetos que se pueden generar…
Enlaces
“Cambiar tamaño de varias imágenes a la vez, tarea difícil sin un soft…”
Estaba leyendo:
Y en los comentarios @Pedro escribió sobre las PowerToys de XP donde teníamos una herramienta para gestionar escritorios “virtuales”, y recordé que tenia un post sobre esta herramienta par “redimensionar imágenes” que venia para XP pero aquí la versión para Windows Vista/7.. asi que aqui va (por fin lo publique, ya que fue una vez que un amigo Mario lo necesitaba)
Redimensionar imágenes
En Windows XP teníamos las PowerToys, donde una de estas funcionalidades “extra” era el Image Resizer que con solo el click derecho nos daba la facultad de una o varias imágenes a la vez
Existen alternativas en soft y también online (S+S).. que mas abajo comento.
Encontré este proyecto en Codeplex…
Lo utilice en Windows 2003, Vista y el nuevito Windows 7 (beta por ahora)
Otras alternativas… online/servicio
Algunos soft de diseño grafico (tipo Photoshop) pero en este caso no era lo que necesitaba…
Además existen herramientas online (S+S)… como por ejemplo Picnik, que además tiene un API para agregar a nuestros sitios (sin necesidad componentes sino utilzar el “servicio”)
Aqui varias alternativas online/servicio:
Encontré también:
También nos puede servir estos …
Picture Resizer 3.5
http://www.rw-designer.com/picture-resize
Quick Snip - Lightweight image resizer
http://www.codeproject.com/KB/graphics/quick_snip.aspx
Enlaces
Si estas utilizando el ultimo release de CSS Friendly Adapter que es la versión 1.0 podrías … deberías tener problemas con el renderizado de algunas “partes de controles”. En este caso particular del PagerTemplate de un Gridview (o Formview/DetailsView)
O sea si utilizamos un Gridview con el paginado y queremos algo “personalizado” y utilizamos
..a modo de ejemplo: Un PagerTemplate básico…
<PagerTemplate>
<asp:LinkButton ID="linkPrimero" runat="server" CommandArgument="First" CommandName="Page" Text="&lt;&lt; Primera" />
<asp:LinkButton ID="linkAnterior" runat="server" CommandArgument="Prev" CommandName="Page" Text="&lt; Anterior" />
<asp:LinkButton ID="linkSiguiente" runat="server" CommandArgument="Next" CommandName="Page" Text="Siguiente &gt;" />
<asp:LinkButton ID="linkUltimo" runat="server" CommandArgument="Last" CommandName="Page" Text="&Uacute;ltima &gt;&gt;" />
</PagerTemplate>
Si lo intentamos con CSS Friendly Adapter NO SE RENDERIZA (o sea, no tendremos nuestro template de paginado en el resultado HTML enviando al navegador)
El dato de este pequeño gran problema estaba por aquí comentado:
Solución
Me descargue el repositorio a la ultima versión (Enero 14 2009) que es la numero 24242 y la compile
Donde los cambios son: (copia textual del archivo changes.txt)
Since Release 1.0 (official Microsoft release)
----------------------------------------------
- GridViewAdapter will add CSS classes to column headings when sorted:
'sortable' (if permits sorting)
'sorted' (if currently sorted)
'asc' or 'desc' (based on current sort direction)
- DataListAdapter will use TABLE layout if RepeatLayout=Table, otherwise will use nested ULs
- Added CheckBoxListAdapter and related WalkThru file.
- Added RadioButtonListAdapter and related WalkThru file.
- Added EmptyItemTemplate support to FormView.
- Resolved issues with and added support for all paging types to FormView and DetailsView.
- Improved method of registering CSS files to create valid XHTML markup.
- Resolved issue where DetailsView in insert mode displays EmptyDataTemplate or throws IndexOutOfRange.
- Fixed MenuAdapter registering wrong js file.
- Fixed issue when setting CssClass in a GridView RowDataBound event is ignored.
- Fixed issues related to proper loading of CSS and script files, including the loading of IE6-only CSS.
Descargarlo compilado
Por el que quiere el componente ya compilado aquí lo tiene para descargar
Enlaces
Hace unos meses estaba utilizando Windows 7 (beta) en mi notebook para desarrollo (ver películas, music, ocio, etc) y llego el momento de Actualizar al RC1… “y lo mensajes eran intimidantes je!”
NOTA: No es por los mensajes sino que a partir de hoy 1 de Julio la Beta de Windows 7 debera apagarse cada 2 horas :(
Del BETA al RC1…
La recomendación del equipo de Windows 7 es instalar desde cero…. o a partir de un Vista, o sea no a partir del beta
http://blogs.msdn.com/e7/archive/2009/04/07/delivering-a-quality-upgrade-experience.aspx
“….We’ve also learned that many of you (millions) are running Windows 7 Beta full time. You’re anxious for a refresh. You’ve installed all your applications. You’ve configured and customized the system. You would love to get the RC and quickly upgrade to it from Beta….”
Y como reconoce que la instalación de cero, configuración de cero y todo esto de cero es: “…That is a real pain.”
Nos ayudan para la instalación desde cero indicándonos que podemos llegar a utilizar Windows Easy Transfer (yo lo hice desde vista pero el querido Windows Easy Transfer no funciona entre diferentes versiones de idioma y el beta 1 de Windows 7 no lo tenia en español y el Vista si, así que en ese momento no me sirvió)…
SINTESIS… RC1 no te permite actualizar desde una versión pre-RC1 del Windows 7
Yo instale desde cero.
PERO…
Si necesitamos “por sobre todas las cosas…actualizar del beta1 al rc1” EXISTE UNA FORMA DE SALTEAR ESTE OBSTACULO
Nos detallan unos pasos que reproduzco textualmente aquí (pero seria buen que leas el post completo del equipo de Engineering Windows 7)
- Download the ISO as you did previously and burn the ISO to a DVD. (*)
- Copy the whole image to a storage location you wish to run the upgrade from (a bootable flash drive or a directory on any partition on the machine running the pre-release build).
- Browse to the sources directory.
- Open the file cversion.ini in a text editor like Notepad.
- Modify the MinClient build number to a value lower than the down-level build. For example, change 7100 to 7000 (pictured below).
- Save the file in place with the same name.
- Run setup like you would normally from this modified copy of the image and the version check will be bypassed.
(*) Nota: Como bien dice en el post… el paso 1 de “quemar DVD” lo puedes reemplazar por:
Mis Mensajes
Al principio…

Hace unos días pero el ultimátum…

Y ayer me hice un tiempo porque el mensaje ya paso a horas…

Por si alguien necesita donde obtener las claves, Martin escribió en su blog:
Enlaces
Por aquí en la empresa utilizamos la primera aplicación, y Francisco me pregunto ayer y lo posteo para que quede por aquí por si alguien lo necesita.
Tenemos muchos .isos (así se escribirá en plural?) (el 99% de las descargas de las suscripciones a MSDN son en este formato) y para no estar quemando DVD, y acorde la tendencia “Green Computer” ;) …
Que utilizamos?
…una herramienta free: MagicDisc Virtual CD/DVD-ROM
Y funciona bien en Windows 7 :) y hasta mapeando el archivo .iso desde la red.
Y además es mas rápido que estar instalando desde el DVD
Para montar o desmontar ….
Otras características:
- Crear .iso desde los originales (para resguardo… o evitar utilizar los originales)
- Crear mas de una unidad virtual
- Crear backups en formato: Universal Image Format (.UIF files) que es una compresión by MagicIso
Formatos soportados:
- BIN (CDRWin)
- IMA/IMG (Generic disk images)
- CIF (Easy CD Creator)
- NRG (Nero - Burning ROM)
- IMG/CCD (CloneCD)
- MDF/MDS (Fantom CD)
- VCD (Farstone Virtual Drive)
- VaporCD (Noum Vapor CDROM)
- P01/MD1/XA (Gear)
- VC4/000 (Virtual CD)
- VDI (Virtuo CD Manager)
- C2D (WinOnCD)
- BWI/BWT (BlinkWrite)
- CDI (DiscJuggler)
- TAO/DAO (Duplicator)
- PDI (Instant Copy)
Existe otra herramienta que me comentaron unos amigos y lo tengo que escribir (aunque todavía no la utilice…)
Virtual CloneDrive
También free! :) puedes descagarlo de aquí Virtual CloneDrive
Enlaces
Más artículos
Página siguiente >