el Guille, la Web del Visual Basic, C#, .NET y más...
Ir al índice de Visual Studio 2008 y .NET Framework 3.5 Utilidades .NET Framework 3.5

Actualización de gsCopia (v1.0.2.2)

 
Publicado el 15/Dic/2007
Actualizado el 16/Dic/2007
Autor: Guillermo 'guille' Som

Actualización de la utilidad gsCopia (v1.0.2.2 del 15/Dic/07). En esta revisión se utiliza un fichero de configuración que esté disponible para todas las actualizaciones.



 

Introducción:

En esta revisión de la utilidad gsCopia, lo que he hecho es usar un fichero de configuración propio que se guarda en "Mis Documentos\gsCopia" (o "Documentos\gsCopia" si es Vista).

Esto es porque cuando se actualiza la aplicación con ClickOnce, se crea un nuevo fichero de configuración para esa nueva versión, por tanto, si ya tienes cosas configuradas, al actualizar la aplicación, pues... se pierden.

Mientras que al mantenerlo aparte, se usarán los datos que ya tuvieras, por tanto, las actualizaciones por ClickOnce no afectarán a los datos de configuración que tuvieras (lo he comprobado, je, je, por eso la versión es 2.2 en vez de 2.0).

 

Aquí tienes el código con los cambios que he hecho en esta revisión 1.0.2.2 y más abajo tienes el resto de links de las revisiones anteriores, la explicación detallada y el link para instalarlo con ClickOnce.

 

En este trozo de código te pongo lo que se hace para leer y guardar los datos de configuración usando mi clase ConfigXml que es la que se encarga de leer/guardar los datos en un fichero.
También tienes el código que he agregado en el constructor del formulario que es donde asigno el directorio en el que se guardará este fichero de configuración.

Imports gsCopia.elGuille.info.Util

Public Class Form1
    Private cfg As ConfigXml

    Public Sub New()

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        Dim fic As String

        With My.Application.Info
            Dim appData As String = _
                    My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\" & .ProductName
            If My.Computer.FileSystem.DirectoryExists(appData) = False Then
                My.Computer.FileSystem.CreateDirectory(appData)
            End If
            fic = appData & "\" & .ProductName & ".cfg"
        End With

        ' Crear el objeto de configuración
        cfg = New ConfigXml(fic, False)

    End Sub

    ' Para saber si se ejecuta como administrador                   (14/Dic/07)
    Private comoAdministrador As Boolean

    Private cancelar As Boolean = False

    Private expanderExpanded As Boolean = True
    Private expanderSize As Size
    Private expander2Expanded As Boolean = True
    Private expander2Size As Size

    Private Sub leerCfg()
        With My.Settings
            If .Location.X > -1 Then
                Me.Location = .Location
                Me.Size = .Size
            End If

            ' Leer los datos del fichero de configuración           (15/Dic/07)
            ' si el fichero .cfg no existe, se usan los datos actuales de configuración (Settings)
            Dim obj As Object
            obj = New SizeConverter().ConvertFromString(cfg.GetValue("General", "Size", _
                                                                     .Size.Width & ";" & .Size.Height))
            .Size = CType(obj, Size)
            obj = New PointConverter().ConvertFromString(cfg.GetValue("General", "Location", _
                                                                      .Location.X & ";" & .Location.Y))
            .Location = CType(obj, Point)
            .ComprobarDiscos = cfg.GetValue("General", "ComprobarDiscos", .ComprobarDiscos)
            .Destino = cfg.GetValue("General", "Destino", .Destino)
            .DestinoCol = cfg.GetValue("General", "DestinoCol", .DestinoCol)
            .Expandido = cfg.GetValue("General", "Expandido", .Expandido)
            .Expandido2 = cfg.GetValue("General", "Expandido2", .Expandido2)
            .MostrarDestino = cfg.GetValue("General", "MostrarDestino", .MostrarDestino)
            .NoModificar = cfg.GetValue("General", "NoModificar", .NoModificar)
            .NoSeleccionar = cfg.GetValue("General", "NoSeleccionar", .NoSeleccionar)
            .OcultarVentana = cfg.GetValue("General", "OcultarVentana", .OcultarVentana)
            .Origen = cfg.GetValue("General", "Origen", .Origen)
            .OrigenCol = cfg.GetValue("General", "OrigenCol", .OrigenCol)
            .Parametros = cfg.GetValue("General", "Parametros", .Parametros)
            .ParametrosCol = cfg.GetValue("General", "ParametrosCol", .ParametrosCol)
            .Utilidad = cfg.GetValue("General", "Utilidad", .Utilidad)
            .UtilidadCol = cfg.GetValue("General", "UtilidadCol", .UtilidadCol)


            cboDestino.Text = .Destino
            string2Cbo(.DestinoCol, cboDestino)
            cboOrigen.Text = .Origen
            string2Cbo(.OrigenCol, cboOrigen)
            cboUtilidad.Text = .Utilidad
            string2Cbo(.UtilidadCol, cboUtilidad)
            cboParametros.Text = .Parametros
            string2Cbo(.ParametrosCol, cboParametros)

            chkOcultarVentana.Checked = .OcultarVentana

            ' No cambiar este valor (siempre debe ser False)
            .ComprobarDiscos = False
            chkComprobarDiscos.Checked = .ComprobarDiscos
            chkComprobarDiscos.Enabled = False

            expanderExpanded = .Expandido
            ' Las nuevas opciones de la versión 1.0.1.0 (12/Dic/07)
            expander2Expanded = .Expandido2

            chkMostrarDestino.Checked = .MostrarDestino
            chkNoSeleccionar.Checked = .NoSeleccionar
            chkNoModificar.Checked = .NoModificar
        End With
    End Sub

    Private Sub guardarCfg()
        With My.Settings
            If Me.WindowState = FormWindowState.Normal Then
                .Location = Me.Location
                .Size = Me.Size
            Else
                .Location = Me.RestoreBounds.Location
                .Size = Me.RestoreBounds.Size
            End If

            ' Actualizar el contenido de los combos
            ' para añadir el texto si no está en la lista
            actualizarCombos()

            .Destino = cboDestino.Text
            .DestinoCol = combo2String(cboDestino)
            .Origen = cboOrigen.Text
            .OrigenCol = combo2String(cboOrigen)
            .Utilidad = cboUtilidad.Text
            .UtilidadCol = combo2String(cboUtilidad)
            .Parametros = cboParametros.Text
            .ParametrosCol = combo2String(cboParametros)

            .OcultarVentana = chkOcultarVentana.Checked

            ' No cambiar este valor
            .ComprobarDiscos = False
            '.ComprobarDiscos = chkComprobarDiscos.Checked

            .Expandido = expanderExpanded

            ' Las nuevas opciones de la versión 1.0.1.0 (12/Dic/07)
            .Expandido2 = expander2Expanded

            .MostrarDestino = chkMostrarDestino.Checked
            .NoSeleccionar = chkNoSeleccionar.Checked
            .NoModificar = chkNoModificar.Checked

            .Save()

            ' Guardar los datos en el fichero .cfg                  (15/Dic/07)
            cfg.SetValue("General", "Size", .Size.Width & ";" & .Size.Height)
            cfg.SetValue("General", "Location", .Location.X & ";" & .Location.Y)
            cfg.SetValue("General", "ComprobarDiscos", .ComprobarDiscos)
            cfg.SetValue("General", "Destino", .Destino)
            cfg.SetValue("General", "DestinoCol", .DestinoCol)
            cfg.SetValue("General", "Expandido", .Expandido)
            cfg.SetValue("General", "Expandido2", .Expandido2)
            cfg.SetValue("General", "MostrarDestino", .MostrarDestino)
            cfg.SetValue("General", "NoModificar", .NoModificar)
            cfg.SetValue("General", "NoSeleccionar", .NoSeleccionar)
            cfg.SetValue("General", "OcultarVentana", .OcultarVentana)
            cfg.SetValue("General", "Origen", .Origen)
            cfg.SetValue("General", "OrigenCol", .OrigenCol)
            cfg.SetValue("General", "Parametros", .Parametros)
            cfg.SetValue("General", "ParametrosCol", .ParametrosCol)
            cfg.SetValue("General", "Utilidad", .Utilidad)
            cfg.SetValue("General", "UtilidadCol", .UtilidadCol)
            cfg.Save()

        End With

    End Sub

 

Además de esto, también muestro la versión actual en la barra de estado (información).

Este es el código que uso (te muestro todo el método Form_Load, pero el nuevo es el que está al principio):

Private Sub Form1_Load() Handles MyBase.Load
    ' La versión del ensamblado y la de Windows                 (15/Dic/07)
    Dim sAppVer As String
    With My.Application.Info
        Dim ensamblado As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly
        Dim fvi As System.Diagnostics.FileVersionInfo
        fvi = System.Diagnostics.FileVersionInfo.GetVersionInfo(ensamblado.Location)
        sAppVer = .ProductName & " v" & .Version.ToString & " (" & fvi.FileVersion & ")"
    End With

    If DateTime.Now.Year > 2007 Then
        statusInfo.Text = "©Guillermo 'guille' Som, 2007-" & DateTime.Now.Year
    Else
        statusInfo.Text = "©Guillermo 'guille' Som, 2007"
    End If
    statusInfo.Text = sAppVer & " - " & statusInfo.Text
    statusInfo.Tag = statusInfo.Text
    Me.statusStrip1.Text = statusInfo.Text

    ' Comprobar si se ejecuta como administrador                (14/Dic/07)
    comoAdministrador = EsAdministrador()
    If comoAdministrador Then
        Me.statusOpAdmin.Image = My.Resources.escudo16_OK
        Me.statusOpAdmin.ToolTipText = " Ejecutando como administrador "
    Else
        Me.statusOpAdmin.Image = My.Resources.escudo16_Exclamation
        Me.statusOpAdmin.ToolTipText = " No estás ejecutando como administrador "
    End If

    toolTip1.SetToolTip(Me.statusStrip1, statusOpAdmin.ToolTipText)

    progressBar1.Visible = False

    expanderSize = expanderGroup.Size
    expander2Size = expander2Group.Size

    ' El texto original de la cabecera
    expanderHeader.Tag = expanderHeader.Text
    expander2Header.Tag = expander2Header.Text

    leerCfg()

    ' Asignar el contrario a lo que se quiere conseguir
    ' ya que en el evento Click se cambia.
    expanderExpanded = Not expanderExpanded
    expanderPic_Click()
    expander2Expanded = Not expander2Expanded
    expander2Pic_Click()

    ' Activar el timer con un intervalo pequeño
    ' para que al cargar el formulario no tarde demasiado
    timerComprobarExtraibles.Interval = 100
    timerComprobarExtraibles.Enabled = True
End Sub

 

 

Y esto es todo... por ahora...

 

Nos vemos.
Guillermo


Código de ejemplo (comprimido):

Pulsa estos links para ver todo lo relacionado con esta utilidad:

Nota:
Tanto los ZIPs como la instalación con ClickOnce incluyen la última versión.


 


La fecha/hora en el servidor es: 23/12/2024 7:34:51

La fecha actual GMT (UTC) es: 

©Guillermo 'guille' Som, 1996-2024