Olen taas asian suhteen pihalla kuin lumiukko, niin voisiko joku vähän valaista asiaa. Haluasin siis sovelluksiini jonkinlaisen asennusohjelman, jolla voisin määrittää esim. seuraavat seikat:
- mihin ohjelma asennetaan(tärkein!)
- mahdollinen käyttäjäsopimuksen hyväksyminen tms.
- mahdollinen poistaminen(jotenkin muuten kuin controlPanelin kautta)
Tällä hetkellä tilanne sellainen, että kun julkaisen sovelluksen publish-komennolla, niin en voi itse määrittää mitään noista edellä mainituista.
Ja sitten jos ohjelma käyttää esim. access-tietokantaa tai ohje-tekstitiedostoa, niin miten sen saa mukaan siihen ohjelmaan, ettei niitä tarvitse jälkikäteen erikseen lisätä. Tietokannan sijainti määritetty koodissa näin ja se sijaitsee debug-kansiossa:
Public MyConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=|DataDirectory|\RnDB.accdb;Jet OLEDB:Database Password=salasana; "
Kysymys on laaja ja en oletakaan, että saisin mitään valmista vastausta mutta jos jotain suuntaviivoja voisitte antaa niin olisin enemmän kuin tyytyväinen.
Mielestäni noi saa Visual Studiossakin määriteltyä, kun teet sille sun projektille installer projektin.
Mutta jos et tykkää tehdä VS:llä tai hankkia esim. Installshieldiä niin tulisi mieleen esim seuraavat ilmaiset asennustyökalut...
Kiitti. VS:kin taipuu näköjään moiseenkin.. mutta on suhteellisen rujon näköinen ja pelkistetty:/ Onko jollain kokemusta esim. tuosta Inno Setup:sta? Ja mikä siinä on se toimintaperiaate? Luodaanko sillä ensiksi erillinen asennusohjelma mikä liitetään projektiin esim. VS:ssä? Vai tuodaanko se tekemäni projekti tähän Inno Setup:iin ja ja siinä sitten lisätään se asennusohjelma? En ole ikinä käyttänyt tälläisiä ohjelmia ja ohjeitakin tuntuis olevan aika niukasti, joten olo on vähän kuin tuolla pihalla olevalla lintulaudalla :0
Hei!
Tää on todella mielenkiintoinen aihe. Olen itsekkin miettinyt paljon että miten teen tekemälleni projektille kunnon asennusohjelman.
Olisikohan jollain niin paljon virtaa näin vuoden alusta että voisi tehdä pieni muotoisen ohjeen asennusohjelman teosta. Itsellä on ainakin se hämärän peitossa että miten ymppään pakettiin käyttäen esim. innosetupia: sqlserverin, .Net frameworkin ja muut jutut mitä projektini tarvitsee.
t: mikko
Install Creator:ia on tullut itse paljon käytettyä.
http://www.clickteam.com/eng/index.php
Ohjelman asennuskansiossa on ini-tiedosto ja sen kieli on englanti (muistaakseni on myös valmiina saksa), mutta jos viitseliäisyyttä riittää, niin suomi-versio tästä ini-tiedostosta on varsin helppo tehdä. Näin asennuspaketit saa täysin suomenkielisiksikin. itsellä on 90% suomennettu versio. Voisin koittaa pistää sen tänään vielä jakoon, mikäli sattuu olemaan tarvetta.(?)
Mikä tuossa install creatorissa on niin hyvää esim. NSISiin verrattuna että siitä kannattaisi maksaa tai pakottaa ohjelman käyttäjät katsomaan tyhmää mainosikkunaa?
NSISissä on muuten vakiona suomenkielinenkin vaihtoehto. Muutenkin kieliä on tarjolla yli 50, että helppo tehdä monikielinen asennin suunnilleen millä kielillä haluaa.
En valitettavasti tuosta innosetupista pysty sen enempää kommentoimaan, kun en siitä itse innostunut. NSISin osalta en sano että se olisi paras tai edes kysyjän tarpeisiin sopivin, mutta omiin tarpeisiini toiminut hyvin. Toki siinä joutuu ehkä tekemään enemmän duunia asennusskriptin kanssa kuin "automaattisilla" asentimilla, mutta onpahan toisaalta täysi kontrolli siihen, millaisen asennuskokemuksen käyttäjille antaa. Itse olen pitänyt sen dokumentaatiota hyvänä ja yleensä jos apu ei löydy helpeistä, niin viimeistään googlella tai ohjelman foorumeilta.
Kaikki käyttäjäkokemuksen ja ohjeet, sovelluksesta riipumatta, ovat tervetulleita. Kysyin tuota Inno Setup:ia , koska sitä oli kehuttu jossain yhteyksissä(ei vaan ole kuulemma kaikkein helpoin vaihtoehto). Kuten aiemmin mainitsinkin, niin olen todella noviisi tämän asian suhteen ja yleensä kaikki yleispätevätkin neuvot helpottavat asian omaksumista. Nollasta lähtiessä aikaa menee niin tuhottomasti sellaiseen "turhaan" yritys/erehdys-tyyppiseen kokeiluun, joten kaikki helpotukset siihen ovat todella avuksi.
Ja taytyy vielä mainita, että täältähän niitä neuvoja olen aina saanut. Nyt esimerkiksi osaan tehdä jonkinlaisen asennusohjelman VS:llä( taputapu:) ja olen tietoinen muutamista muista vaihtoehdoista. Vielä muutama päivä sitten olin autuaan tietämätön ks. asioiden suhteen..
Access tietokantaan yhteyden kanssa olen leikkinyt 'liiankin' paljon ja itse tulin sellaiseen tulokseen että tein .udl tiedoston jota sitten kutsun koodissani. Tuohon .udl tiedostoon tulee tiedot mihin kantaan otetaan yhteys. Mulla meinaa oli tilanne että haluttu MS Access tietokanta määritellään vasta ohjelman käynnistyksen jälkeen ja itse tiedoston sijainti saattaa muuttua koneesta toiseen. Eli aina kun käynnistetään luon .udl tiedoston c:\temp kansioon käyttäjän antamien tietojen mukaan (missä .accdb tiedosto sijaitsee) ja sitten käytän tuota tiedostoa. Ohjelman sulkemisen yhteydessä sitten poistan kyseisen .udl filen. Ei välttämättä kaikkein hienoin, mutta toimii mun tapauksessa.
Jos kyseinen ratkaisu kiinnostaa, niin voisin yrittää runoilla tänne miten olen sen toteuttanut.
Olisin varsin kiinnostunut näkemään ks. ratkaisusi eli pistäpä ihmeessä runoja näytille :)
Aluksi tehdään ihan vaikka wizardilla tietokantayhteys johonkin MS Access tietokantaan ja sitten mennään muokkaamaan tuota yhteyttä (toteutus VB 2008 Express):
1) Project Properties 'ikkunassa' valitaan Settings välilehti ja sinne määritellään yhteys
- Name --> jokin nimi yhteydelle esim TestDBConnectionString
- Type --> Connection
- Scope --> Application
- Value --> ja tämä on sitten se 'erikoinen' kohta. Eli tässä voit klikata kenttää ja sitten oikeasta reunasta painaa painiketta jossa on 3 pistettä ja se avaa uuden ikkunan mutta älä tee näin, vaan KIRJOITA haluamasi arvo tähän. Syy on se että ikkunaan jos yrität laittaa arvoja, niin sepäs ei hyväksy että jätät jotain täyttämättä...=) Arvot mitä mulla on siinä on seuraava:
File Name=C:\Temp\tietokanta.udl;Provider=Microsoft.
Itse tiedoston sisältö on seuraavanlainen:
[oledb]
; Everything after this line is an OLE DB initstring
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\ohjelma\db\nimet.accdb;Persist Security Info=False
Tiedoston voi tehdä Notepadilla ja se on talletettava Unicode enkoodausta käyttäen. Ja tuo rivi ; Everything after th.... niin TUO ON PAKOLLINEN...=)
Ja siis luon tuon tiedoston tosiaan heti ensimmäisena tekona kun sovellus käynnistyy (käyttäjä syöttää tunnukset) eli mitään tietokantoja ei olla vielä availtu.
Eli yksinkertaisesti tee VB 2008 wizardilla tietokanta yhteys olemassa olevaan MS Access tietokantaan ja muokkaa sitä ohjeitten mukaisesti. Itse en meinaa ainaskaan saanut tietokantojen nimiä muutettua muuttujiksi ajon aikana. Tällä tavalla .udl tiedoston nimi on 'tinattu' koodiin mutta itse tietokanta voi olla minkäniminen vain ja sijaita missä vain.
Jouduin siis tällaisen väkertämään kun mulla on yksi sovellus jonka pitää pystyä käyttämään samasta tietokannasta montaa eri versiota (2001, 2002... 2007 vuoden tietoja, esim...)
Ja se miksi mua kiinnosti tämä ketju niin:
Voisiko joku tosiaan kertoa että millä saa helpoiten tehtyä asennuspaketin tuollaisesta sovelluksesta. Juu, Install Shield ja sieltä Wizard joka haistelee kaikki vb .net ohjelmani vaatimat .dll tiedostot ja rekisteröinnit automaattisesti mutta hintalappu on 800€. Toinen vaihtoehto kai olisi ostaa VS 2008 Standard jossa tulee tuo Setup Application mukana (Express versiossa sitä kun ei ole).
Kiitti, tuohan näyttää varsin mielenkiintoiselta. Pitääpä kokeilla johonkin omaan juttuun.
Nii ja mun Office versio on siis 2007 kuten varmaan arvasit tuosta
Provider=Microsoft.ACE.OLEDB.12.0
kohdasta. Tsemppiä testaamiseen. Mulla on itseasiassa kolme eri MS Access kantaa joita mä käytän tossa mun sovelluksessa ja asennuksia on about 30 kpl ja jokaisessa koneessa se eri hakemistorakenteella rakennettu...
Itse muinoin kokeilin Clickteamin softaa. Liiankin helppo ettei tarvinnut kuin osoittaa exeä ja homma siinä, valmis installer. Jälkeenpäin huomasin installerin tekevän uninstallerin joka ei tehnyt MITÄÄN. Se oli silloin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.