Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Batch: Updater

mika132 [24.01.2011 18:13:18]

#

Eli se mikä on totta en koskaan osaisi tälläistä tehdä, koska en C++ osaa internet yhteyksiä ottaa, mutta jos joku viitsisi antaa oppaita ja kertoa hieman mitä pitäisi tehdä, että saisi updaterin.

Pelini on Alpha Testauksessa ja on erittäin raskasta aina antaa testaajille uudet asennuspaketit, joten olisi paljon helpompaa jos olisi updater jolla sen voisi tehä. Eli olisiko jotain vinkkejä miten voisi toteuttaa? =)

Deffi [24.01.2011 18:36:10]

#

URLDownloadToFile Windows API:lla onnistuu tiedoston lataaminen netistä, ilman että tarvitsee soketteihin perehtyä. Jos pelin on tarkoitus toimia muissakin käyttiksissä, kannattaa tutustua vaikka libcurliin.

Metabolix [24.01.2011 18:55:32]

#

Helposti onnistuu myös niin, että laitat pelisi mukaan jonkin paketteja purkavan ohjelman (vaikka bsdtar) ja latausohjelman (vaikka wget) ja teet yksinkertaisen bat-tiedoston, joka näiden avulla lataa ja purkaa uuden version ohjelmasta. Jos mainitut ohjelmat sijaitsevat pelin hakemiston alla esimerkiksi hakemistossa C:\peli\paivitys, päivitys onnistuu tällaisella bat-tiedostolla (joka myös sijaitsee siis samassa hakemistossa):

@echo off

REM Siirrytään bat-tiedoston omaan hakemistoon (C:\peli\paivitys\).
cd %~dp0

REM Ladataan uusi versio; osoitteen pitää olla aina sama.
wget http://sivut/paivitys.tar.bz2 -O paivitys.tar.bz2

REM Puretaan paketti ylempään hakemistoon (eli .. eli C:\peli\).
bsdtar -xf paivitys.tar.bz2 -C ..

REM Poistetaan paketti; sitä ei tarvita enää.
del paivitys.tar.bz2

Tähän bat-tiedostoon voi sitten tehdä ihan normaalisti vaikka pikakuvakkeen työpöydälle.

mika132 [25.01.2011 16:06:04]

#

En ole .bat tiedostoja koskaan tehnyt, mutta nytpä sekin tullut koitettua.. Ohjelma ei kutenkaan toimi ainakaan oikealla tavalla.

@echo off
cd %~dp0
wget http://www.pelila.com/tiedostot/World leaders_peli.zip -O World leaders_peli.zip
bsdtar -xf World leaders_peli.zip -C ..
del World leaders_peli.zip

Eli minulla on kansio:

peli/paivitys
siellä on updateri

sitten on
peli/paivitys/7-zip
Eli minulla oli koneella 7-zip joten ajattelin jospa se toimisi.

sitten on
peli/paivitys/wget


Klikatessani tuplaklikkauksella updater.bat tiedoston päällä konsoli ikkuna välähtää edessä eikä järjestelmä lataa mitään.

Sitten pari muutakin kysymystä. =)

1. Mikä noista -xf ja -c (rivi 4) määrittää, että alemmasta kansiosta haetaan.
2. Miten voin tarkistaa .txt tms tiedostossa oleva teksti (esim versionumero) ja sitten katsoa vaikka .zip paketista pitääkö ladata. Eli esimerkkinä

Käytössä oleva versio 1.0 (tai txt tiedossa se voisi olla 100)
Updater löytää tiedoston: paivitys_102.zip
pitää ladata

E: Pienen järkeilyn jälkeen huomasin, että ei se edes toimisi noin, koska tieto ei päivity käyttäjien tietokoneille, että uusiversio on tämä.

Onko mitään helppokäyttöistä ohjelmointikieltä johon on helppotutustua ja saa internettiin yhteyttä ja ladattua jotain esim python tms?

Metabolix [25.01.2011 16:48:43]

#

Järki käteen. Ajattelit käyttää 7-zippiä, joten miksi bat-tiedostossa lukee yhä bsdtar? Muutenkin eri ohjelmat toimivat eri tavalla, ja 7-zip ei varmasti toimi samanlaisilla komennoilla kuin bsdtar. Epäilen, että 7-zipin Windows-versiota ei ehkä edes voi käyttää komentoriviltä.

Toinen yhtä iso virhe on välilyönti tiedostonimessä ja nettiosoitteessa. Älä käytä välilyöntejä, jos ei ole pakko, ja jos on pakko, käytä koko nimen ympärillä lainausmerkkejä. Nettiosoitteessa välilyönnin paikalle kuuluu kirjoittaa "%20".

Voit laittaa bat-tiedoston loppuun rivin "pause", niin näet, mikä kaikki meni pieleen.

lainaus:

1. Mikä noista -xf ja -c (rivi 4) määrittää, että alemmasta kansiosta haetaan.

Osaatko lukea? Ylempi on eri suunnassa kuin alempi, ja kommentissa lukee, että ylempi on sama kuin .. on sama kuin C:\peli\. Voisit myös lukea bsdtarin ohjeet, joista selviäisi, että parametri -C tarkoittaa, että sitä seuraava parametri kertoo hakemiston, parametri -x tarkoittaa tiedoston purkamista (eXtract) ja parametria -f:ää seuraa purettavan tiedoston nimi. Nämä asiat ovat tietenkin bsdtar-ohjelman omia asetuksia eivätkä takuulla päde esimerkiksi 7-zippiin.

lainaus:

Onko mitään helppokäyttöistä ohjelmointikieltä johon on helppotutustua ja saa internettiin yhteyttä ja ladattua jotain esim python tms?

Montakin, esimerkiksi PHP:llä voisit käyttää suoraan funktioita file_get_contents ja file_put_contents. Monien helppojen kielten ongelmana kuitenkin on, että niiden toimittaminen käyttäjälle on aika hankalaa. PHP:n kohdalla voisit ehkä kokeilla Roadsend PHP:tä. Windows-maailmassa nykyään aika käytännöllisiä vaihtoehtoja ovat myös C# ja VB.Net.

User137 [26.01.2011 01:43:01]

#

Tai perinteisellä tyylillä laittaa ftp-serverin pystyyn omalle koneelle ja antaa testaajien ladata itse pakettinsa.

Vastaus

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

Tietoa sivustosta