Avatar billede pablopablo Nybegynder
01. marts 2004 - 15:14 Der er 22 kommentarer og
1 løsning

Dynamisk Installation sti

Hejsa...

Jeg tænkte på, hvordan laver jeg det sådan i min installation af min win-form...at det vil virke ligegyldigt hvor brugeren vælger at installere programmet...problemet er : Hvis jeg fx. har skrevet data til disken inde fra mit program...jeg så ligger stien jo fast(kodet) ind i programmet og det gør stien ligeledes når jeg skal indlæse dataen igen...og derfor bliver dvs. filer jo nødtil at ligge de helt sammen steder for at det kan virke...

Ja, jeg ved at man kan specificere under setupen hvor div. enkelte filer skal installeres...men det er jo stadig styret af den erklærede sti inde i koden...dvs. det er ikke 100 % dynamisk...er der en metode eller lign. man kan benytte ind i koden, således at den fx. altid installerer de ønskede filer i windows biblioteket - uafhængig hvor brugeren har installeret sit O/S...?

mvh. PabloPablo
Avatar billede arne_v Ekspert
01. marts 2004 - 15:20 #1
environment windir peger på windows directory

men jeg vil kalde det meget grimt at installere noget der (medmindre
du tilfældigvis arbejder for Microsoft)
Avatar billede pablopablo Nybegynder
01. marts 2004 - 15:32 #2
okey...? men hvad anbefaler du mig så?

Jeg kunne jo godt tænkte mig at det hele fungere dynamisk - hvis du forstå?
Avatar billede schristensen Praktikant
01. marts 2004 - 17:35 #3
Alle steder i programmet hvor du har behov for at angive en sti... der bruger du bare

DirectoryInfo dir = new DirectoryInfo( Directory.GetCurrentDirectory() );

som roden. Ovenstående dir er det direktory som programmet bliver afviklet fra, og hvis du altid tager udgangspunkt i denne, så er det ligemeget hvor slutbrugeren har programmet installeret.
Avatar billede pablopablo Nybegynder
01. marts 2004 - 18:58 #4
okey smart...DVS. når jeg sidder og udvikler mit program...så sætter jeg den i første omgang til at skrive til en bestemt mappe, som jeg også kan læse fra....og når jeg så har lavet mit prog. 100 %...så ændrer jeg både skrive og læse stien til  DirectoryInfo dir'et ?-)

Vil du ikke være flink lige at skrive et eksempel hvordan du benytter dir helt præcis ?
Avatar billede schristensen Praktikant
01. marts 2004 - 19:04 #5
Jeg bruger det f.eks. i en FTP server jeg har lavet. Jeg har gemt alle bruger profiler i en mappe som "Users". For at jeg altid kan finde denne mappe uden at vide om programmet ligger på c: eller d: og i en mappe som hedder programmer eller ikke. Så har jeg bare skrevet at mappe ligger som en under mappe til

DirectoryInfo dir = new DirectoryInfo( Directory.GetCurrentDirectory() );

Så hvis jeg skal have fat i en brugerprofil, så ved jeg at den XML-fil som indeholder dem ligger på følgende sti

dir.FullName + "\\Users\\User.xml"

Og på den måde behøver jeg ikke tænke på hvor brugeren har installeret sit program henne på pc'en....
Avatar billede pablopablo Nybegynder
01. marts 2004 - 19:11 #6
super! meen ...jeg savner stadig lige svar på mit spg. fra før...en ting er jo når man har lavet sit program færdig...men under selve udviklingen/når jeg selve kører programmet...så er jeg jo stadig nød til at skrive en permanent sti som jeg skrive/læser til/fra....og SÅ når jeg er færdig...så benytter jeg din smart metode ik...? eller kan jeg benytte den helt fra starten af...??
Avatar billede schristensen Praktikant
01. marts 2004 - 19:20 #7
Du kan også bruge det imens du udvikler....
Avatar billede pablopablo Nybegynder
01. marts 2004 - 19:30 #8
Øhhmmm....det kan godt være det er mig som er langsom...men hvordan vil du bruge DirectoryInfo dir = new DirectoryInfo( Directory.GetCurrentDirectory() );
i mens du udvikler? altså når man ligger og kompilerer osv...på det tidspunkt har man jo ikke noget (installations)"dir" at ref. til...?
Avatar billede pablopablo Nybegynder
01. marts 2004 - 20:03 #9
Det er mig som stener...når man bruger det under selve udviklingen, så benytter den vel blot den mappe ens projekt-filer ligger i!...do!

nu hvor jeg har din opmærksomhed...så skulle du vel ikke vide noget om indsættelse af OLE objekter i forbindelse med en crystal report - vel?-) du kan tjene MANGE points hvis du gør!!
Avatar billede schristensen Praktikant
01. marts 2004 - 20:07 #10
når man udvikler, så er currentdir stadig derfra hvor programmet afvikles = der hvor din exe fil er.... men hele ideen er jo også at man som sådan ikke referer til et dir, men til der hvor programmet afvikles fra. F.eks. når man udvikler i Visual Studio, så vil den smide dine filer i projektmappe\bin\debug\..

og dir vil i dette tilfælde være den samme sti indtil mappen debug, da det er der din exe fil er gemt...

Derfor kan man udvikle sit program og teste det, og de fil man referer til vil under udvikling blive gemt under eks. projektmappe\bin\debug\, mens når du flytter programmet vil blive gemt hvorend programmet ender med at ligge..
Avatar billede schristensen Praktikant
01. marts 2004 - 20:08 #11
nå, havde ikke lige set at du havde postet.... sorry. :)
Avatar billede schristensen Praktikant
01. marts 2004 - 20:09 #12
Jeg må dog komme til kort med OLE objekter og crystal report!!
Avatar billede pablopablo Nybegynder
01. marts 2004 - 20:11 #13
Det er bare LIGE det jeg søger !! hehe...100 points til dig!

Husk : Hvis du har viden om OLE så skriv endelig!!!
Avatar billede pablopablo Nybegynder
01. marts 2004 - 20:14 #14
okey....men tak for hjælpen da! Jeg kan godt finde ud af at indsætte en OLE objekt...men jeg kan ikke indsætte fx. et word doc. på fx. 50s. som både indeholde tekst og billeder...og at den så automatisk opdeler doc'et ligesom jeg kan få den til hvis jeg indsætter et rent tekst doc....:( Hvis du kan finde svarer til mig så venter der 200 point ;)
Avatar billede schristensen Praktikant
01. marts 2004 - 20:23 #15
jeg skriver mig det lige bag øret, og hvis jeg finder noget som jeg tror du kan bruge, så skriver jeg... :)
Avatar billede jepsen999 Nybegynder
01. marts 2004 - 21:34 #16
Hmm, jeg er ikke helt enig i brugen af CurrentDir.
Når programmet skal installeres vil der typisk blive oprettet nogle genveje i startmenuen og evt. på skrivebordet. Da vil GetCurrentDir blive sat til den sti der er angivet under "Start in"-feltet i egenskaberne for genvejen - hvilket betyder at du kan komme til at lede i den forkerte mappe.
Alternativt kan du bruge enten
Application.ExecutablePath (Virker kun i WinForms)
eller
this.GetType().Assembly.CodeBase

De giver begge stien til exe-filen, så du skal lige trække stien ud af strengen.
Avatar billede pablopablo Nybegynder
01. marts 2004 - 21:56 #17
hhmm....okey...ja nu har jeg ikke fået det afprøvet endnu...men hvis du har ret...så har du jo fortjent points'ne....hhmmm....

Du skal i hvert fald have mange tak for hjælpen!

Du har vel ikke forstand på indsætning af OLE objekter vel ?-))
Avatar billede pablopablo Nybegynder
01. marts 2004 - 22:29 #18
ØØhmm....jeg tænkte lige på...hvad nu når jeg har oprettet en "database" forbindelse til en XML-fil fra V.S. under "Design-mode"...dvs. de grafer jeg har oprettet og indsat i min crystal report...de ref. jo også til en bestemt fil...hvorledes ref. jeg rigtigt til denne fil...jeg kan ikke finde ref. i selve koden...:(

Det ville være rigtig rart - hvis jeg også blot kunne lægge den i projekt-biblioteket og så ref. til den på den smarte måde i har talt tidligere...
Avatar billede jepsen999 Nybegynder
01. marts 2004 - 22:33 #19
Hehe, nej desværre heller ingen hjælp at hente her omkring OLE.
Mht. point må jeg jo bare svare lidt hurtigere næste gang ;)
Avatar billede pablopablo Nybegynder
01. marts 2004 - 22:37 #20
hvad med mit spg. ang. ref. til XML(databasen) filen?
Avatar billede jepsen999 Nybegynder
01. marts 2004 - 23:12 #21
Jeg forstår ikke helt hvordan du har oprettet database-forbindelse til en xml-fil??
Avatar billede jepsen999 Nybegynder
01. marts 2004 - 23:23 #22
Hvis det er specifikt mht. crystal report må jeg nok melde pas, da jeg aldrig har fattet hvordan man arbejder med crystal reports... :(
Avatar billede pablopablo Nybegynder
02. marts 2004 - 01:34 #23
nej det har ikke noget decideret med CR at gøre...det er mere princippet i hvordan jeg laver en dynamisk ref. til min XML fil...således at det virker dynamisk under installation ligesom de resterende filer i setup'en. CR indhenter data fra filen herfra og præsenterer det...det kunne ligeså godt have været et datagrid eller lign. som referede til xml filen/datasettet datatabellen ligger i...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester