Installer pröggen



  • natürlech gibt es das, aber wenn ich ein programm herunterlade, das dies für mich erledigt, den lerne ich nicht wirklich was dabei.

    Nun, da mir gesagt wurde, dass mein Vorhaben möglich ist, wäre ich froh um einen denkanstoss...

    mfg



  • Naja also "Name.exe" kannste doch ganz einfach als Resource einbinden, und diese dann auf HDD schreinen lassen.


  • Mod

    Argus Magnus schrieb:

    natürlech gibt es das, aber wenn ich ein programm herunterlade, das dies für mich erledigt, den lerne ich nicht wirklich was dabei.

    Nun, da mir gesagt wurde, dass mein Vorhaben möglich ist, wäre ich froh um einen denkanstoss...

    Und was willst Du lernen wenn Du einen selber baust? Wie man es falsch macht? 🤡

    Es gibt so viele Seitenaspekte der Installatin, dass ich kaum glaube, dass Du annähernd hier etwas lernst.
    Der MSI hat sich soweit verselbstständigt, dass man hier sein eigener Guru sein muss. Und mit C++ und WinAPI Programmierung hat das schon lange nichts mehr zu tun.

    Schau Dir WiX an, mehr braucht man nicht und besser kann man den MSI kaum integrieren.

    BTW: Ich hasse Installer... und ich hasse welche schreiben zu müssen... 🤡



  • @Martin Richter: wusste nicht wohin damit... ich habs im API Forum gepostet weil ich ein API fenster erzeugt habe, worin das Programm laufen soll^^

    Ich habe mittlerweile eine möglichkeit gefunden, als resourcen mitkompilierte dateien zu extrahieren (das was ich machen will...) allerdings ist der Code in C, möchte das ganze aber in C++, kann mir jemand helfen?

    /* Datei: main.c */
    
    bool CreateDll() {
        	HRSRC hResInfo;
    	HGLOBAL hResMem; /* Handle zur Resource wenn sie in den globalen SPeicher geladen wird */
    	void *pData; /* Zeiger, der auf die eigentlichen Daten der Resource im SPeicher zeigen wird. */
    	size_t size; /* Erhält Infos über Dateigröße. */
    	FILE *pFile; /* Ein Filehandle, welches wir benutzen um die Datei zu schreiben. */
    
    	/* Wir erhalten als Rückgabewert von FindResource einen Zeiger auf einen "Info"-Block zur gewünschten Resource. */
    	hResInfo = FindResource(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_TEST_DLL), "DllData");
    
    	if(!hResInfo)
    		return false;/* Die Resource wurde nicht gefunden */
    
    	/* Jetzt wird die Resource geladen und wir erhalten ein Handle auf
    	   die geladene Resource */
    	hResMem = LoadResource(GetModuleHandle(NULL), hResInfo);
    
    	/* Mit LockResource erhalten wir endlich einen Pointer auf den eigentlichen Inhalt der
    	   Resourcen Datei (den Inhalt der Dll Datei). Die Resource wird zudem im Speicher ge-"lock"-t,
    	   quasi "fest eingeschloßen" und kann jetzt nicht verändert werden. */
    	pData = LockResource(hResMem);
    
    	/* Wir erhalten die Länge des Resourceninhaltes. */
    	size = SizeofResource(GetModuleHandle(NULL), hResInfo);
    
    	/* Und hier schreiben wir endlich den Inhalt der Resource in die Datei DLLNAME, welche am
    	   Anfang von main.c als "test.dll" definiert wurde. */
    	pFile = fopen(DLLNAME, "wb");
    	if(pFile==NULL)
    		return false;
    	fwrite(pData, 1, size, pFile);
    	fclose(pFile);
    
    	return true;
    }
    

    Quelle: http://www.skka.de/tutorials/tutorial_skka.de_dllresources.htm



  • Wobei? Beim Code für dich schreiben? Nö.



  • Mit C++ wird das nicht besser! Die paar Zeilen da unten sind doch bestens!



  • ja schon, aber ich möchte kein gemisch der sprachen, wenn es sich vermeiden lässt...

    mein Ansatz war so...

    .
    .
    .
    ofstream file;
    file.open("datei.exe");
    if(file==NULL)
        return false;
    file.write(pData, size);
    file.close();
    
    return true;
    

    Dann kommt aber ne Fehlermeldung die besagt, das LPVOID nicht in const char * konvertiert werden kann.. (bezieht sich auf pData, Zeile 😎



  • Hi,

    ich erstelle immer meine Setups mit der Open-Source Software Innosetup http://de.wikipedia.org/wiki/Inno_Setup.

    MfG Manu32



  • Argus Magnus schrieb:

    ja schon, aber ich möchte kein gemisch der sprachen, wenn es sich vermeiden lässt...

    dann bist du mit der winapi falsch daran.



  • roflé


Anmelden zum Antworten