administrator rechte prüfen

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

naibaf7

Betreff: administrator rechte prüfen

BeitragFr, Aug 07, 2009 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
hi zusammen,
mein aktuelles projekt ist ein Schach, dem ich neustens auch einen eigenen installer gebastelt habe

jetzt zum problem. Installiert man das Schach nach C:\Programme, hat das programm in diesem ordner _nur_ leserechte. D.h. wenn das programm dateien (savegames, texturesets oder settings) schreiben will, scheitert das leider.

ich habe natürlich schon versucht, zu prüfen ob das programm admin rights hat, indem ich eine datei damit geschrieben habe und dann prüfte ob die exisitert. Microsoft hat aber auch da nen trick: das programm sagt, schreiben und lesen erfolgreich! Warscheinlich "simuliert" windows da eine umgebung. Für die settings ist das aber schnurze, denn natürlich ist diese "umgebung" nur gültig so lange das programm lauft!

deshalb brauche ich jetzt zwei dinge:
eine methode um zu prüfen ob das programm auch "as admin" läuft
und eine methode, um von der Setup datei aus dem programm administrator attribute zu geben. Naja ich kenne da schon 2 methoden: entweder der exe im namen ein "setup" oder ein "install" zu geben, dann erhält das Programm autom. admin attribut. Sieht aber unschön aus wenn das teil dann statt "Chess.exe" "ChessInstall.exe" heisst...

thx schonmal..
My Pc:
MSI 790FX-GD70, Phenom X4 955BE, 2x2GB DDR3-1600, 8800GTS-512, WD 640GB + Samsung 160GB, Scythe Kaze Master

mahe

BeitragSa, Aug 08, 2009 0:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Programm sollte im Ordner Eigene-Dateien oder Anwendungsdaten schreiben und nicht im Programmordner.
ʇɹǝıdɯnɹɹoʞ ɹnʇɐuƃıs - ǝpoɥʇǝɯ-ɹoɹɹıɯ ɹǝp uı ,ɹoɹɹǝ,
 

naibaf7

BeitragSa, Aug 08, 2009 9:55
Antworten mit Zitat
Benutzer-Profile anzeigen
naja diese lösung wollte ich eigentlich nicht bevorzugen... da ich das Schach eigentlich möglichst kompakt gehalten haben möchte (d.h. nur C:\Programme beschmuddeln und das wars) aber wenns halt nicht geht^^
My Pc:
MSI 790FX-GD70, Phenom X4 955BE, 2x2GB DDR3-1600, 8800GTS-512, WD 640GB + Samsung 160GB, Scythe Kaze Master

BtbN

BeitragSa, Aug 08, 2009 10:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Unter Vista(Und XP und 200 eigentlich auch, aber da rennt ja jeder depp als admin rum...) und höher hat man unter Programme nichts zu schreiben, ganz einfach.
Die richtige lösung ist es, sich die Umgebungs-Variable APPDATA zu holen, und darin einen Ordner mit den Namen seines Programmes anzulegen, worin man dann seinen kram speichern kann. Abgesehen davon stoßen mich installer für mini-programme eher ab.

hazumu-kun

BeitragSa, Aug 08, 2009 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann so Installer auch nicht groß leiden, Zip-Archiv reicht völlig.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent
 

naibaf7

BeitragSa, Aug 08, 2009 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
*räusper*

also dann wirds demfall 2 versionen vom Schach geben:
-ZIP mit localstore, also lokal im programmordner (entpackungsordner) gespeicherten daten
-Installer mit Appdata als ordner für gespeicherte daten

es geht mir eben darum, dass das Schach Massentauglich sein muss. Und ich kenne doch einige leute, die mit Programmen in ZIP ordnern echt nicht auskommen. Daher ist installer für diese Leute freundlicher zu bedienen.

btw. ist das auch eher ein self-extraction archive als ein installer, da es keine registry einträge schreibt, nur den Programmordner und auf Wunsch noch Desktop sowie Startmenüeinträge (Shell links, Shortcuts)

den habe ich so gebaut:

Code: [AUSKLAPPEN]

incbin "Chess.exe"
'...
incbin "GF\Textures\Textur1.jpg"
'usw.

'und dann einfach
createdir Setupdir$
copyfile("incbin::chess.exe",Setupdir$+"Chess.exe")


und wens noch interessiert den Shell aufruf zum erstellen der Shortcuts:
Code: [AUSKLAPPEN]
      wshs = WriteFile(setuppath$+"WshShell.vbs")
      WriteLine wshs,"Set WshShell = Wscript.CreateObject("+Chr$(34)+"Wscript.Shell"+Chr$(34)+")"
      WriteLine wshs,"Set oShellLink = WshShell.CreateShortcut("+Chr$(34)+SMPath$+"Chess.lnk"+Chr$(34)+")"
      WriteLine wshs,"oShellLink.TargetPath = "+Chr$(34)+setuppath$+"Chess.exe"+Chr$(34)
      WriteLine wshs,"oShellLink.Save"
      WriteLine wshs,"Set oShellLink = Nothing"
      CloseFile wshs
      system_("wscript "+Chr$(34)+setuppath$+"WshShell.vbs"+Chr$(34))
      DeleteFile setuppath$+"WshShell.vbs"
My Pc:
MSI 790FX-GD70, Phenom X4 955BE, 2x2GB DDR3-1600, 8800GTS-512, WD 640GB + Samsung 160GB, Scythe Kaze Master

BtbN

BeitragSa, Aug 08, 2009 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Und was machst du, wenn das jemand auf Linux ausführen soll, wo dein VBS zeug nicht geht?
 

naibaf7

BeitragSa, Aug 08, 2009 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
da muss ich leider enttäuschen
diese kombination MAXGUI + MINIB3D läuft unter Linux NICHT
es gibt immer die meldung "segmentation fault" und das programm kann somit nicht compiliert werden.

Wenn natürlich jemand mir helfen kann, bin ich bereit, unter Ubuntu 9.04 eine Linux version zu entwickeln, ist ja einfach. Unter Linux sind Softlinks etc. auch anders zu bedienen, da macht man dann im programm einfach ein
?Win
und
?Linux
oder so ähnlich wars doch.. also OS-Spezifischen Code...

falls mir jemand helfen kann gibts also ne Linux version. Aber garantiert keine Mac OsX version.

btw liegt der Programmumfang momentan bei 3695 Zeilen, zum Installieren benöigt das Techdemo momentan 40MB, darin enthalten sind 4 vorgefertigte textursets.
My Pc:
MSI 790FX-GD70, Phenom X4 955BE, 2x2GB DDR3-1600, 8800GTS-512, WD 640GB + Samsung 160GB, Scythe Kaze Master

beanage.johannes

BeitragSa, Aug 08, 2009 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
warum garantiert kein OS X?

hazumu-kun

BeitragSa, Aug 08, 2009 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil apple suckt!
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent

beanage.johannes

BeitragSa, Aug 08, 2009 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
will jetzt keinen kindischen "mein OS ist besser" streit auslösen aber was soll an on OS X so scheiße sein?
haben kumpel der nen engine proggt ie crossplatform sein soll. er hat os x gehast, aber jetzt wo er sich näher damit beschäftigt hat u.a. mit der programmierung in obJc findet er os x besser als win, obwohl er es gehasst hat^^

Windows suckt da schon eher^^ besonders was gutes design angeht^^Razz

hazumu-kun

BeitragSa, Aug 08, 2009 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe ja auch geschrieben "Apple suckt".
OS X is eigentlich ganz geil, ich kann Apple aber nicht leiden.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent
 

naibaf7

BeitragSo, Aug 09, 2009 0:00
Antworten mit Zitat
Benutzer-Profile anzeigen
hrm,
ich wollt etz echt nicht ne "welches OS hat die längere ladezeit" diskussion.
Ich sagte garantiert kein OS X, weil ich nicht auch noch die nerven habe, für OS X den ganzen OS spezifischen code zu schreiben... zudem habe ich äusserst selten zugriff auf nen MAC (nur Schule oder kollege) und einen Hackintosh aufsetzen, das tu ich mir auch nicht an. Linux habe ich eben schon drauf, genau so wie auch Windows Vista.

Also wenn mir jemand bei "segmentation fault" weiterhelfen kann, was btw. bei vielen bmx/minib3d anwendungen unter Linux passiert, dann ist das gut. Bevor jemand fragt: der neuste nVidia non-opensource treiber ist korrekt installiert, so wie das sein muss. Es laufen alle sonstigen programme. Unter WINE geht sowohl das schach als auch blitz max, nur das ist wieder keine massentaugliche lösung.
My Pc:
MSI 790FX-GD70, Phenom X4 955BE, 2x2GB DDR3-1600, 8800GTS-512, WD 640GB + Samsung 160GB, Scythe Kaze Master

BtbN

BeitragSo, Aug 09, 2009 0:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso muss man in BMax OS-Spezifischen Code schreiben? Ich hab das noch nie gemusst, und trotzdem liefen meine Programme.
 

naibaf7

BeitragSo, Aug 09, 2009 0:42
Antworten mit Zitat
Benutzer-Profile anzeigen
z.b. für den installer.
Softlinks unter linux sind nicht gleich wie die shortcuts für windows etc.
und für Mac OS X sind die wieder anders.
Zudem programmiere ich in einer doch schon recht komplizierten konstellation (eben minib3d zusammen mit maxgui)
oder dann spezifischen code je nach "installationsart". Ich werde sicher eine zip version nebst der install version rausgeben. das macht also schonmal 4 versionen (windows/linux install windows/linux zip bzw. tar.gz)

btt:
wie sieht das jetzt mit "segmentation fault" aus?
My Pc:
MSI 790FX-GD70, Phenom X4 955BE, 2x2GB DDR3-1600, 8800GTS-512, WD 640GB + Samsung 160GB, Scythe Kaze Master

BtbN

BeitragSo, Aug 09, 2009 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
nen Seg Fault ist nen Speicherzugriffsfehler, der von allem kommen kann. Im zweifel hast du einfach einen programmier-fehler. Ohne genauere angaben(Tip: Es gibt einen Debugger), kann man da nicht helfen.
 

naibaf7

BeitragSo, Aug 09, 2009 21:52
Antworten mit Zitat
Benutzer-Profile anzeigen
debugger von bmax ist an, dort steht nichts. Kommt dann nur ganz am ende "segmentation fault" und nicht mehr. Oder gibts noch andere möglichkeiten das zu debuggen?
Achja die exe erstellt er. Aber auch wenn man ihn unter linux per konsole startet, steht in der konsole "segmentation fault".
K.a. aber ich glaube das problem kommt von Minib3d aus!
das problem tritt ebenfalls beim bird demo.bmx auf (was auch als bb3d sample existiert) und auch bei der maxgui/minib3d demonstration bei den examples von minib3d. deshalb kann ich, denke ich, einen programmierfehler ausschliessen.
My Pc:
MSI 790FX-GD70, Phenom X4 955BE, 2x2GB DDR3-1600, 8800GTS-512, WD 640GB + Samsung 160GB, Scythe Kaze Master

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group