27532 total geeks with 3537 solutions
Recent challengers:
  • lzlw bonus 3 - 01:34AM
  • lzlw level 5 - 03:32AM
  • lzlw bonus 15 - 09:28PM
 Welcome, you are an anonymous user! [register] [login] Get a yourname@osix.net email address 

Articles

GEEK

User's box
Username:
Password:

Forgot password?
New account

Shoutbox
ceegcolt
[b][url=http ://www.moncl erdownstores .com/moncler -women-jacke ts-c-5.html] moncler outlet[/url] [/b] [b][url=http ://www.moncl erdownstores .com/moncler -women-jacke ts-c-5.html] moncler jackets[/url ][/b] cord on an outlet in addition to connect that usb cable w
ceegcolt
<strong><a href="http:/ /www.moncler downstores.c om/">moncler outlet fashion</a>< /strong> <br > <a href="http:/ /jacketmoncl er57.webs.co m">moncler outlet fashion</a>< br> <strong><a href="http:/ /www.moncler downstores.c om/">moncler outlet</a></ strong> <br> <a h
ceegcolt
<strong><a href="http:/ /www.replica vacheroncons tantin.com/" >replica vacheron constantin</ a></strong> <br> <strong><a href="http:/ /www.replica vacheroncons tantin.com/" >vacheron constantin watches</a>< /strong> <br > <strong><a href="http:/ /www.replica vacheron
ceegcolt
<strong><a href="http:/ /www.reporti tapi.com/">J immy Choo Shoes outlet</a></ strong> <br> <strong><a href="http:/ /www.reporti tapi.com/">J immy Choo Bridal</a></ strong> <br> <strong><a href="http:/ /www.reporti tapi.com/">J immy Choo Sandals</a>< /strong> <br > <b
ceegcolt
[b][url=http ://www.8tn8. com/]mbt shoes<strong ><a href="http:/ /www.8tn8.co m/">mbt shoes on sale</a></st rong> <br> <strong><a href="http:/ /www.8tn8.co m/">cheap mbt shoes</a></s trong> <br>

Donate
Donate and help us fund new challenges
Donate!
Due Date: Jul 31
July Goal: $40.00
Gross: $0.00
Net Balance: $0.00
Left to go: $40.00
Contributors


News Feeds
The Register
Soyuz source
replenishes
international space
station
Look! Up in the
sky! Five Brit
satellites on one
Indian rocket!
Florida cops cuff
open-carry,
balls-out pirate
packing
"operational"
flintlocks
Microsoft to HIKE
Azure prices as
exchange rates
shift
Boffins demo
"memcomputer", plot
von Neumann"s
retirement
Surveillance
software vendor
Hacking Team hacked
US dominates
net-security
patents, China,
Canada and Oz on
the advance
Argentina finds
messenger to shoot
after e-vote vuln
allegations
DDoSers call 1988
and want its
routing protocol
hacked
China unveils
Internet Plus plan
for FIRST time
(actually third
time)
Slashdot
Brazilian
Evangelicals Set Up
a "Sin Free"
Version of Facebook
Linux 4.2-rc1 Is
One of the Largest
Kernel Releases of
Recent Times
Ask Slashdot: If
You Could Assemble
a "FrankenOS" What
Parts Would You
Use?
Greece Rejects EU
Terms
Dartmouth Contests
Showcase
Computer-Generated
Creativity
Wired Looks Back At
"Mondo 2000"
Checking Mammoth
DNA Against
Elephants Hints At
How They Got Hairy
Seahorse Tails
Could Inspire New
Generation of
Robots
Army Exoskeleton
Prototype Helps
Soldiers Learn To
Shoot
Glitch Halts New
Horizons Operations
As It Nears Pluto
Article viewer

Included Dlls with your exe without needing an install



Written by:Pertinax
Published by:Codybob90
Published on:2009-05-06 18:18:31
Topic:Dot.Net
Search OSI about Dot.Net.More articles by Pertinax.
 viewed 5548 times send this article printer friendly

Digg this!
    Rate this article :
I created a WinForms utility that depended on some DLLs and wanted the user to be able to just download and click on the exe to run the app. Usually if your exe needs some other files you wrap things up into a package and the user has to go through an install process. This takes time and forces the user to unistall if they don't want the program after it's served its purpose. I didn't like this and found a way to embed the files I needed into my exe and extract and link them when the program ran.

.Net won't let you include a dll as a resource. The way around this is to push your dll into an image and include the image in the exe. If you skip the image header .net won't complain. You just need to mark the beginning and end of the dll binary data so you know where to start and stop when extracting it.

Here is a program I wrote that makes it easy to push your file into an image.
http://www.securitysoftware.cc/Programs/FileMerge.exe

Once you have done this you can use the following methods to save the image to a file and then extract the dll from the image.

//Save image to a file
PictureBox.Image.Save("C:\\temp_file");

//Extract the dll
ExtractFile("C:\\temp_file", "C:\\MyDll.dll", "^^^^^^^^^^", "**********");


//This method extracts the dll from the image file and saves it with the name given
public static bool ExtractFile(string sourceFile, string destination, string startMarker, string endMarker)
{

       int filestart = 0;
       int fileend = 0;

       int marker_position = 0;

       FileInfo finfo = new FileInfo(sourceFile);

       FileStream fs = new FileStream(sourceFile, FileMode.Open);

       //Create Buffer
       byte[] buff = new byte[finfo.Length];

       //Read file contents
       fs.Read(buff, 0, (int)finfo.Length);

       //Close file
       fs.Close();

       //Get file start position
       for(int bytecnt = 0; bytecnt < buff.Length; bytecnt++)
       {
           //Look for startMarker
           while (buff[bytecnt + marker_position] == startMarker[marker_position++])
           {
               if (marker_position == startMarker.Length)
               {
                   filestart = bytecnt + marker_position;
                   break;
               }
           }

           marker_position = 0;
       }

       //Find end position
       for (int bytecnt = filestart; bytecnt < buff.Length; bytecnt++)
       {
           //Look for startMarker
           while (buff[bytecnt + marker_position] == endMarker[marker_position++])
           {
               if (marker_position == startMarker.Length)
               {
                   fileend = bytecnt;
                   break;
               }
           }

           marker_position = 0;
       }

       //Save to file
       fs = new FileStream(destination, FileMode.Create);
       fs.Write(buff, filestart, fileend - filestart);
       fs.Close();

       return File.Exists(destination);
}




Did you like this article? There are hundreds more.

Comments:
Anonymous
2009-06-30 14:53:14
Hi
This is very good idea to let end user free from installations and addins... but when you programming in .Net the user must install the .Net framework first. anyway take a look at product named thinstall or vmware virtualisation suit you may find them useful too.
Anonymously add a comment: (or register here)
(registration is really fast and we send you no spam)
BB Code is enabled.
Captcha Number:


Blogs: (People who have posted blogs on this subject..)
bb
ASP.NET RadioButton GroupName when inside a Repeater on Sun 10th Jun 8am
I was thankful on finding this nugget of code, which makes the groupname work out when slamming in radiobuttons in an asp.net repeater. http://www.codeguru.com/csharp/csharp/cs _controls/custom/article.php/c12371/


     
Your Ad Here
 
Copyright Open Source Institute, 2006