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-
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.
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-
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.
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-
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
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-
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-
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
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-
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).
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-
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-
Juuri näin, mutta jos teet erillisasennuksen, etkä päivitystä, täytyy settingsit kopioida.
Aihe on jo aika vanha, joten et voi enää vastata siihen.