Entwickler-Ecke
Sonstiges (.NET) - Packer
Ccenter - So 27.11.11 15:58
Titel: Packer
Nabend,
ich möchte aus Übungszwecken eine art Packer schreiben. Dieser soll Dateien in eine sich selbst entpackende .exe verschieben.
Ich habe mir das so vorgestellt, dass ich ein Hauptprogramm schreibe, welches per CodeDom eine neue Exe erstellt in dem die Dateien als Ressourcen mitgeliefert werden.
Wenn die Exe fertig erstellt wurde, macht man einen Doppelklick darauf und es werden die mitgelieferten Dateien entpackt.
Ich habe in einem älteren Thread etwas von RessourceWriter gelesen. Die Klasse erstellt allerdings eine fertige Ressourcedatei. Wie verbidne ich diese mit der von CodeDom ersteugten Exe?
Ccenter - So 27.11.11 16:57
Nach etwas Durchforsten des Internets habe ich nun folgenden Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp"); string Output = @"created.exe"; System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters(); parameters.GenerateExecutable = true; parameters.OutputAssembly = Output; parameters.ReferencedAssemblies.Add(@"C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll"); parameters.Win32Resource = @"myResources.res";
CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, textBox1.Text);
if (results.Errors.Count > 0) { string Source = ""; foreach (CompilerError CompErr in results.Errors) { Source += "Line number " + CompErr.Line + ", Error Number: " + CompErr.ErrorNumber + ", '" + CompErr.ErrorText + ";" + Environment.NewLine + Environment.NewLine; MessageBox.Show("Error:\n" + Source); } } else { MessageBox.Show("Successful"); } |
Mit parameters.Win32Resource = @"myResources.res"; gebe ich den Pfad zu der Ressourcendatei an.
Jedoch bekomme ich immer die Fehlermeldung, dass es eine ungültige Win32-Resourcendatei sei.
Erzeugt habe ich diese mit:
C#-Quelltext
1: 2: 3: 4:
| IResourceWriter writer = new ResourceWriter(@"myResources.res"); writer.AddResource(string1, "123456"); writer.Generate(); writer.Close(); |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!