Olen väsäämässä asennusohjelmaa sovellukselleni (Deployment project), mutta en saa millään aikaiseksi sellaista, että kun käyttäjä asentaa ohjelman, hänen koneelleen C-hakemistoon muodostuisi haluamani kansio. Voisikohan joku tietäväisempi auttaa...:)
Jos sinulla on .Net sinun pitäisi pystyä luomaan erillinen setup wizard. Käynnistä se ja seuraa ohjeita.
Löytyy: File->New->Project... sieltä Setup and Deployment projects ja sieltä setup wizard.
Edit: Uuden kansion luominen onnistuu näin
MkDir("C:\kansio")
Edit: Sori. En lukenut koko viestiäsi. En huomannut, että olit jo aloittanut uuden deployment projektin.
Saanhan toki koodissa kansioita luotua ja tuon asennusohjelmankin saan väsäämään vaikka minkälaisia kansioita, mutta vain määrättyihin sijainteihin, eli "application menu", "users desktop" jne... mutta en mistään löydä (myöskään wizardilla) miten saisin nimenomaan "C:\" -sijaintiin kansion. Yritin tuolla "add special folder" ja "custom folder" yms ja sitten niille laittaa properties->defaultlocation, mutta nou.
No, toistaiseksi tyydyn luomaan kansion (jos sitä ei ole) aina ohjelman käynnistettäessä...
Kiitos neuvoistasi:)
SannaK kirjoitti:
Saanhan toki koodissa kansioita luotua ja tuon asennusohjelmankin saan väsäämään vaikka minkälaisia kansioita, mutta vain määrättyihin sijainteihin
Mitä tarkoitat määrätyillä sijainneilla? En oikein ymmärtänyt ongelmaa, mutta osaisin ehkä auttaa, jos ymmärtäisin.
Yritän selittää:
Kun minulla on auki Deployment Projectin "File System on target machine", niin sinne saa lisäiltyä jos jonkinmoista kansiota kun oikealla klikkaa, mutta niiden sijainti (siinä koneessa, johon ohjelma sitten joskus asennetaan) tulee olemaan ProgramFiles tai Omat tiedostot tai Suosikit yms, mitä tuolla on valmiiksi ehdotettu (.net sanoo niin!)
Haluaisin löytää sieltä jonkun kolosen, johon voin kirjoittaa "C:\" ja silloin kun joku onnekas saa käsiinsä minun tekemäni Setupin ja ajaa sen, hänen koneelleen pullahtaa C:\MinunLuomaKansio
Ei siis tiedosto, vaan kansio ja juuri nimenomaan C:lle
En oikein osaa enempää ongelmaa selittää, eikä tämä ole mikään järkyttävän tärkeä asia, mutta jos mielenkiintoa riittää niin:)
Vika ei välttämättä ole selostuksessasi, mutta minun on edelleen vaikea ymmärtää. Eli siis pitäisikö vain yksinkertaisesti luoda kansio C-asemalle?
Sehän toimii juuri noin:
MkDir("C:\MinunLuomaKansio")
Vai onko ongelma siis siinä, että tämä setup-ohjelma, vai mitä oikein teit, ei pysty luomaan kansiota C:lle?
hunajavohveli kirjoitti:
Vai onko ongelma siis siinä, että tämä setup-ohjelma, vai mitä oikein teit, ei pysty luomaan kansiota C:lle?
Kyllä. Eli esimerkiksi jos minulla on ohjelma nimeltä OmaSovellus ja DeploymentProject nimeltä OmaSovellusSetup,joka asentaa tuon OmaSovelluksen niin kun käyttäjä ajaa OmaSovellusSetup asennusohjelman, tuo kansio luodaan vaikka hän ei koskaan edes käynnistäisi näin asentamaansa sovellusta OmaSovellus(no ehkei kukaan asentele ohjelmia käyttämättä niitä, mutta selvennyksen vuoksi)
Jos kirjoitan OmaSovellus -ohjelmakoodiin tuon MkDir("MinunLuomaKansio") niin silloinhan tuo kansio luodaan vasta sovelluksen suorituksen aikana.
Tutkin hieman tuota deployment projektia ja keksin heti keinon:
1) Sellä projektissa on ylhäällä tietokoneen kuva, joka on nimetty "File System on Target Machine"
2) Paina sitä oikealla hiiren näppäimellä ->Valitse Add Special Folder->Valitse sieltä Custom Folder
3) Valitse Custom Folder #1, jos sitä ei ole vielä valittu.
4) Säädä Properties ikkunasta DefaultLocationin kohdalle "C:\"
5) Muuta myös kansion nimi tarvittaessa
Edit: Ainoa ongelma tämän kanssa on se, että käyttäjä pääsee nyt muuttamaan myös tämän kansion sijaintia koneessa. Oletus on ainoastaan C:n juuri.
Niin kuin viestissäni [20.04.2004 20:27:03] kerroin, tuota jo yritin, mutta liekkö sitten minulta joku mokkula uupuu .net -versiostani (opiskelijalisenssi) kun en noista tiedä, mutta ei ilmesty kansio ei.
Itse asiassa päätin jo luopua koko kansion luomisesta asennusvaiheessa, mm. mainitsemastasi syystä ja laitan vaikka form_loadiin tarkastukset ja tarvittaessa ko. kansion luonnin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.