Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Vb.net Ohjelman päivitys

Sivun loppuun

Happy [16.02.2011 02:14:05]

#

Moi.

Tässä ois tällänen "Ohjelmiston Päivitys" ohjelma.

Imports UpdateVB
' UpdateVb.dll löytyy tuolta, jos joku haluaa... ;)
' http://updatevb.codeplex.com/

Public Class Form1

    Public updater As New UpdateVB.UpdateVB

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' tsekataa löytyykö nettisivujen versio.txt tiedostosta muu teksti kuin ".1"
        Try
            updater.checkinternet()
            updater.checkversion("http://nettisivu/Versio.txt", ".1")
        Catch ex As Exception
        End Try
        ' jos versio.txt tiedoston teksti on muu kuin ".1"

        If updater.updateavailable = True Then
            If MessageBox.Show("Uusi Ohjelmaversio Löytynyt. Päivitetäänkö Nyt?", "Ohjelma.", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                ' jos vastataa kyllä. imuroidaan uusi asennus tiedosto ja lopetetaan ohjelma
                Dim webAddress As String = "http://nettisivu/Ohjelma.msi"
                Process.Start(webAddress, vbMinimizedNoFocus)
                End
                End If
        End If
        ' jos versio.txt tiedoston teksti on ".1"
        If updater.updateavailable = False Then
            MsgBox("Ohjelmistosi On Ajan Tasalla." & (Chr(13)) & "Ver. 1.0.", MsgBoxStyle.Information)
        End If
    End Sub
End Class

Täysin toimiva systeemi...

Mutta, jos haluaa tehdä sellaisen päivityksen että käyttäjä ei "huomaa" sitä.
Eli päivitys ei ilmottais mitään vaan latais uuden Ohjelma.exe:n, ja seuraavalla ohjelman käynnistys kerralla ois uusi versio sitten käytös.

Pitäskö tälläseen hommaa kehitellä joku toinen pikku ohjelma joka haistas että,
että uusi versio Ohjelma.exe:stä on olemassa ja korvais sitte sen vanhan.

Onko kellää ideoita, tai helpompaa ratkaisua?

-Happy-

groovyb [16.02.2011 12:29:21]

#

itse suosittelisin käyttämään valmista päivitystoimintoa, jonka saa publish asetuksista päälle.

eli kun julkaiset automaattisella toiminnolla, ohjelma kysyy haetaanko päivityksistä ja mistä (esim verkkoasema, romppu, nettiosoite etc)

kun tämä on käytössä, ohjelmasi hakee kyseisestä osoitteesta uutta asennuspakettia (eli kun julkaiset ohjelman uudestaan eri versionumerolla, tämän saa myös asetuksista määritettyä), ja asentaa uuden version automaattisesti.


toki voit tehdä itse koodin päivittämisestä kuten olet tehnytkin, mutta sinänsä tarpeetonta jos ei englanninkielinen päivitysilmoitus haittaa.

Happy [17.02.2011 00:05:41]

#

Moi.

Kokeilin tota publish juttua, mutta en päässy kovinkaan pitkälle ku heitti errorin.

The Web server does not appear to have FrontPage Server Extensions installed

En viittis ruveta säätämään (Ainakaan vielä...)
tota servu konetta kun se toimii muuten moitteettomasti.
Miten toi päivitys ton publish jutun kanssa toimii käytännössä?

Se siis ilmottaa että uusi päivitys on olemassa ja lataa sen. Mitä sitten?
Korvaako se vain sen vanhan EXE:n, ja ohjelma alkaa normaalisti vai tuleeko siinä jonkinlainen käyttäjän "manuaalisesti" tehtävä setuppi juttu?

Sitten siellä publish hommassa oli optio että tarkistaako ohjelma päivitykset
ennen kuin ohjelma avataan, vai avaamisen jälkeen. :P

Tollanen juttu ois ratkasu mun ongelmaan, mutta kuinka ihmessä ohjelman saa niin tekemään? Siis ennen ohjelman avausta.

-Happy-

groovyb [17.02.2011 00:40:34]

#

eli käytännössä toimii siten että kun uusi päivitys on saatavilla, ohjelma ilmoittaa päivitysmahdollisuudesta. jos käyttäjä valitsee ok, ohjelma (taustalla) lataa päivityksen, asentaa ja korvaa nykyisen asennuksen. eli koko ohjelma asentuu uudestaan. mutta automaattisesti kylläkin.

päivitykset tarkastetaan ohjelmaa käynnistäessa, samalla tavoin kuin asennettaessa ohjelmaasi muutenkin (eli .net asennukset etc.)

mitään manuaalista ei käyttäjän tarvitse tehdä kuin painaa ok nappia.

Happy [17.02.2011 01:28:08]

#

Moi taas...

No nyt mä sain ohjelmani julkastua tuolla publish jutulla.
Serverille tulee aina uusi versio ku julkasee, mutta sitten ku
käynnistää sen "vanhan" ohjelman, ni ei se kyllä mitään päivitystä löydä.

Teenköhän mä nyt jotain väärin??? TAAS.

Oisko tohon jossain joku ohje, vai osisko groovyb neuvoa?

-Happy-

groovyb [17.02.2011 09:53:58]

#

eli

vaihe 1. Julkaise alkuperäinen softa haluamaasi päivitysosoitteeseen,ja valitse että hakee päivityksiä osoitteesta x. (publish toiminnolla, valitse joku muu kuin Dont search updates)

vaihe 2. asenna softa

vaihe 3. tee uusi versio softastasi (Project -> <projektin nimi> properties -> publish -> publish version (Major on versionumero, Minor on alinumero, eli esim versio 1.1)

vaihe 4. julkaise uusi versio päivitysosoitteeseen

vaihe 5. Käynnistä asentamasi ohjelma uudelleen

Happy [17.02.2011 12:42:51]

#

Moi.

Kiitoksia paljon. Nyt toimii. :P

Tyhmänä kokeilin yöllä pelkällä debug ajolla tota enkä asentanu softaa koneelleni. No ei varmaa toimikkaa... ;)

Mutta nyt pelittää, Kiitoksia vaan groovyb!

-Happy-

Happy [28.02.2011 14:36:59]

#

Moi.

Nyt sitten tuli ongelmia ton päivitys homman kanssa.

Ohjelmiston päivitys onnistuu kyllä moitteetomasti,
mutta päivitys tuhoaa kaikki my.settings tiedot.

Oisko kellään tietoa minne setting tiedot jäävät muistiin?

On pikkasen turhauttavaa ohjelman päivityksen jälkeen
aloittaa ns. tyhjältä pöydältä koko homma uudestaa.

Käyttäjänimet yms. Yms.

-Happy-

groovyb [28.02.2011 14:53:34]

#

lainaus:

You need to manually update your application settings, I use this easy method:

Create a boolean setting called MustUpgrade, User scope, default to True.
Then write a method to check if My.Settings requires updating, and call it's Update() method if so. Flag your settings as updated, and save. Call this somewhere in your app load. The Upgrade() method will update your Settings to the new format, and migrate your existing values over.

Sub UpgradeMySetings()
        If My.Settings.MustUpgrade Then
                My.Settings.Upgrade()
                My.Settings.MustUpgrade = False
                My.Settings.Save()
        End If
End Sub

Happy [28.02.2011 15:32:46]

#

Moro.

Eli voiko ton setting haun laittaa uuteen Päivitys versioon,
niin että se hakee ne settingsit siitä vanhasta ohjelmaversiosta,
Vai onko "vanhat" settingsit nyt mennyttä kalua?

-Happy-

groovyb [28.02.2011 15:45:58]

#

jokainen click once asennus sisältää oman settings tiedoston. (MSDN:stä löytyy lisätietoa missä se sijaitsee ja niin edespäin)

Käytännössä sinun tulisi ohjelman ensimmäisellä käynnistyskerralla kopioida tiedosto talteen, jos tallennusta ei ole jo tehty.jos tallennus on tehty, kopioida vanha tallennustiedosto uuden päälle ja suorittaa upgrade settingseille (aiempi postaukseni).

Happy [28.02.2011 16:29:22]

#

Moi.

Ok. Eli nyt näyttää sille että ei näytä hyvältä. ;P

No, pitää yrittää keksiä jotain ku pääsen töistä.

Kiitti kumminkin avusta...

-Happy-

Happy [01.03.2011 15:37:31]

#

Moi taas.

Viime yö on nyt takuttu noitten settingsien kanssa... Turhaan.

Ohjelmaan ei tarvi mitään ylimääräisiä koodeja settingsiä varten.
Riittää että päivitys version numero on suurempi kuin edellinen versio.

Kokeilin päivittää samalla ja pienemmällä ohjelmaversiolla,
ja silloin settingsit "nollaantui".

Suuremmalla versionumerolla kaikki toimi niinkuin pitääkin.

(tuskin kukaan kylläkään päivittää ohjelmansa pienemmällä,
tai samalla versionumerolla...)

Ajattelin ilmottaa asiasta, ni muitten ei tarvi ihmetellä asiaa sen enempää.

-Happy-

groovyb [01.03.2011 17:46:54]

#

Juuri näin, mutta jos teet erillisasennuksen, etkä päivitystä, täytyy settingsit kopioida.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta