Hallo,
ich habe eine Datenbank als Ressource eingebunden. Diese soll dann beim Form Load in den AppData Ordner extrahiert werden. Das klappt auch soweit. Allerdings ist die Datenbank dann 0 Byte groß. Es scheint als würde nur die Datei erstellt werden, ohne dass
dabei etwas kopiert wird.
Hier den Code, welchen ich immoment habe. Über den Form Load rufe ich dann ExtractFromAssembly() auf.
private void ExtractFromAssembly()
{
string strPath = Application.LocalUserAppDataPath + "\\database.accdb";
System.Windows.Forms.MessageBox.Show(strPath);
if (File.Exists(strPath)) File.Delete(strPath);
Assembly assembly = Assembly.GetExecutingAssembly();
var input = assembly.GetManifestResourceStream("Namespace.database.accdb");
var output = File.Open(strPath, FileMode.CreateNew);
CopyStream(input, output);
input.Dispose();
output.Dispose();
System.Diagnostics.Process.Start(strPath);
}
private void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[32768];
while (true)
{
int read = input.Read(buffer, 0, buffer.Length);
if (read <= 0)
return;
output.Write(buffer, 0, read);
}