27280 total geeks with 3532 solutions
Recent challengers:
  • macfij level 8 - 01:14PM
  • srn reverser 5 - 12:11PM
  • srn reverser 4 - 09:45PM
 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
MaxMouse
It's Friday... That's good enough for me!
CodeX
non stop lolz here but thats soon to end thanks to uni, surely the rest of the world is going good?
stabat
how things are going guys? Here... boring...
CodeX
I must be going wrong on the password lengths then, as long as it was done on ECB
MaxMouse
lol... the key is in hex (MD5: of the string "doit" without the "'s) and is in lower case. Maybe i should have submitted this as a challenge!

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


News Feeds
The Register
Movie industry"s
evil plan to
destroy the
internet is going
precisely nowhere
Judge spanks SCO in
ancient ownership
of Unix lawsuit
How much for a
wrist job? A tenner
normally, but for
this one, over $30k
India"s heavy
launch rocket
passes flight test
Hack hijacks
electric
skateboards, dumps
hipsters in the
gutter
Microsoft begins
war against fake
phone tech support
scams
NBN Co reveals
product roadmap and
Telstra planning
deal
Forget Google"s
robot cars, now
it"s on to ANDROID
cars
Kiwi hacker
"menace" pops home
detention tracker
cuffs
Johnson &
Johnson snatches
your .baby for $3m
Slashdot
Review: The
BlackBerry Classic
Is One of the Best
Phones of 2009
FBI Confirms Open
Investigation Into
Gamergate
Satellite Captures
Glowing Plants From
Space
Investigation:
Apple Failing To
Protect Chinese
Factory Workers
Critical Git
Security
Vulnerability
Announced
Marissa Mayer"s
Reinvention of
Yahoo! Stumbles
Ars Reviews Skype
Translator
Extracting Data
From the Microsoft
Band
"Team America" Gets
Post-Hack Yanking
At Alamo
Drafthouse, Too
Grinch
Vulnerability Could
Put a Hole In Your
Linux Stocking
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 5140 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