Updates?

Also mal ein paar technische Sachen:
Nie mehr als ein Statement pro Zeile!
Nach geschweiften Klammern macht man immer eine neue Zeile für neuen Code

Und beim unteren fehlt der interne Pfad. Du müsstest C:\\Programme\\Test mit dem internen Pfad der Datei verbinden und dann als Parameter an UntzipItem übergeben.
 
Das verstehe ich jetzt nicht ganz wie mit Parametern?

void unzip1()
{
//
HZIP hz = OpenZip("C:\\Programme\\DeckButler.zip",0);
ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index;
for (int i=0; i<numitems; i++)
{
GetZipItem(hz,i,&ze);
UnzipItem(hz,i,"C\\Programme\\Test\\Datei.txt);
}

Also fûr jedes file das da drin ist eine neue
"UnzipItem(hz,i,"C:\\Programme\\Test\\Datei.endung");
machen oder?

Und woher kenne ich den internen pfad der datei aus dem zip file?
 
*sigh* Du musst dem nicht den Pfad zuweisen. Du musst Pfad und Dateiname (ze.name) verknüpfen und dann an UnzipFile übergeben. Zum Verknüfen kannst du std::string verwenden.
 
Das verstehe ich nich könntest dus mir evtl mal schreiben,dass ichs verstehe weil ich verstehe davon gerade nixx
 
std::string szBasePath = "C:\\Programme\\";
szBasePath += ze.name;

Damit hast du die beiden zusammengefügt.
 
Habe es nun eingebaut aber er entpackt die Daten trotzdem noch ins Verzeichnis vom Programm (DeckButler downlaod.exe)
Ich möchte , dass die Dateien in folgenden Ordner entzippt werden: "C:\Dokumente und Einstellungen\BENUTZER\Eigene Dateien\DeckButler

wie kann man den "BENUTZER"-Ordner auswählen,da dieser bei allen anders heisst

C:
#include <iostream>
#include <windows.h>
#include <urlmon.h>
#include <string>
#include <direct.h>
#include "unzip.h"
using namespace std;
 
#pragma comment(lib,"URLMon.lib")

void deckbutler()
{
    // Datei herunterladen
HRESULT result = URLDownloadToFile(
    NULL,
    TEXT("http://home.arcor.de/Terra23/DeckButler/DeckButler.zip"), // URL zur Datei
    TEXT("C:\\Programme\\DeckButler.zip"), // Lokaler Name der Datei
    0,
    NULL);
if (result == S_OK)
{
  cout << "DeckButler.zip erfolgreich heruntergeladen" << endl;
  system("PAUSE");
  cout << endl;
}
else
{
  cout << "Fehler beim Download" << endl;
  system("PAUSE");
}
}

void programmdateien()
{
// Datei herunterladen
HRESULT result2 = URLDownloadToFile(
    NULL,
    TEXT("http://home.arcor.de/Terra23/DeckButler/Programmdateien.zip"), // URL zur Datei
    TEXT("C:\\Programme\\Programmdateien.zip"), // Lokaler Name der Datei
    0,
    NULL);
if (result2 == S_OK)
{
  cout << "Programmdateien.zip erfolgreich heruntergeladen" << endl;
  system("PAUSE");
  cout << endl;
}
else
{
  cout << "Fehler beim Download" << endl;
  system("PAUSE");
}
}

void remove()
{
    remove("C:\\Programme\\DeckButler.zip");
    remove("C:\\Programme\\Programmdateien.zip");
    cout << "Dateien geloescht" << endl;
    system("PAUSE");
	cout << endl;
}

void unzip1()
{

  HZIP hz = OpenZip("C:\\Programme\\DeckButler.zip",0);
  ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index;
  for (int i=0; i<numitems; i++)
  {
	std::string szBasePath = "C:\\Programme\\Test\\";
    szBasePath += ze.name;
	GetZipItem(hz,i,&ze);
	UnzipItem(hz,i,ze.name);
  }
  CloseZip(hz);
}

void unzip2()
{
  //
  HZIP hz = OpenZip("C:\\Programme\\Programmdateien.zip",0);
  ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index;
  for (int i=0; i<numitems; i++)
  { GetZipItem(hz,i,&ze);
    UnzipItem(hz,i,ze.name);
  }
  CloseZip(hz);
}

void start()
{
	cout << "Programm starten? (j/n): ";
	char input = ' ';
	while ((input != 'j') && (input != 'J') && (input != 'n') && (input != 'N'))
	{
		cin.sync();
		cin.get(input);
	}
	if (input == 'j' || input == 'J')
	ShellExecute(NULL,"open","DeckButler.exe",NULL,NULL,SW_SHOWNORMAL);
}	

void login()
{
	string passwort;

	cout << "Passwort:";
	cin >> passwort;

	if(passwort=="DB")
	{
		deckbutler();
		programmdateien();
		unzip1();
		unzip2();
		remove();
		start();
	}
	else
	{
		cout << "Login failed" << endl;
		system("PAUSE");
	}
}

int main()
{
	login();
}

Hier könnt ihr euch mal die Programmdateien herunterladen:
http://www.file-upload.net/download-2416625/DeckButler-download.zip.html
 
Zuletzt bearbeitet:
Wie muss man den denn ändern

Ich habe es jetzt mal folgendermassen gemacht allerdings funktioniert es nicht

C:
void unzip1()
{

  HZIP hz = OpenZip("C:\\Programme\\DeckButler.zip",0);
  ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index;
  for (int i=0; i<numitems; i++)
  {
        std::string szBasePath = "C:\\Programme\\Test\\";
        szBasePath += ze.name;
	GetZipItem(hz,i,&ze);
	UnzipItem(hz,i,ze.name);
  }
  CloseZip(hz);
}
 
Zurück