Jag har gjort ett separat program (update.exe) som sköter om uppdateringen av alla mina andra program (program.exe). Det fungerar fint när användaren väljer att uppdatera manuellt via update.exe: uppdateringen laddas ner, är program.exe igång så avslutas det medans uppdateringen installeras och sen startas program.exe igen. Men nu vill jag försöka få till en automatisk uppdatering. Programmen som installeras läggs ju i princip alltid i C:\Program alt. C:\Program Files och där krävs administratörsrättigheter. Och eftersom vanliga användare inte har tillgång till varandras kataloger så kommer det i så fall att innebära att varje användare måste installera uppdateringen. Kanske: alltså, i så fall måste du ju naturligtvis installera "per-user" på riktigt och installera typ under C:\Documents and Settings\<user>\Application Data (dvs. System.Environment.SpecialFolder.ApplicationData / .LocalApplicationData) Niklas, din idé är inte alls dum. Ska testa den så kan jag återkomma med resultatet. Nu har jag testat den och det fungerar klockrent. Kommunikationen mellan programmen blev väl inte "by the book", men den fungerar och det påverkar ju inte uppdateringsprincipen.Princip för uppdatering
Eftersom jag vill att uppdateringar ska ske även om användaren inte är administratör så trodde jag att lösningen var att använda en Windows service (updateservice.exe). Om program.exe är igång under uppdateringen så ska det avslutas, uppdateringen ska installeras och program.exe ska startas igen. Och här blir det fel, eftersom program.exe kommer att startas upp från updateservice.exe och därmed under localsystem istället för under rätt användare.
Då är jag tillbaka på ruta 1 där uppdateringen måste installeras från användarens konto så att program.exe kan startas upp korrekt igen och det innebär problem eftersom alla användare inte är administratörer.
Hur kan jag lösa problemet?Sv:Princip för uppdatering
Det känns som en dålig lösning.
/ThomasSv: Princip för uppdatering
1. Låt servicen säga till programmet att det ska avslutas.
2. Programmet startar då ett annat program för "nuvarande användare", kalla det "waiter", och avslutar sig själv.
3. Servicen gör uppdateringen.
4. Servicen säger till waiter att uppdateringen är klar.
5. Waiter startar programmet igen, och avslutar sig själv.Sv: Princip för uppdatering
då har du ju inte problem med admin rättigheter, men då måste ju också varje användare installera och uppdatera programmet skilt.
(Sen att Setup Projekt tillåter att installera "only for me" i program files är ju en annan femma men fullständigt misslyckat)Sv:Princip för uppdatering
/ThomasSv: Princip för uppdatering
/Thomas