27098 total geeks with 3528 solutions
Recent challengers:
 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
omentomikel
[b][url=http ://www.tiffa nysets.com/] sterling silver tiffany[/url ][/b] [b]<a href="http:/ /www.tiffany sets.com/">t iffany outlet store</a>[/b ] human brain development. By helping to make music an exclusive part regarding you along with your baby's every da
omentomikel
<ul><li><str ong><a href="http:/ /www.tiffany sets.com/">t iffany sale</a></st rong> </li>< li><strong>< a href="http:/ /www.tiffany sets.com/">t iffany jewellery</a ></strong> < /li><li><str ong><a href="http:/ /www.tiffany sets.com/">t iffany and co online shop</a></st
omentomikel
[b][url=http ://www.moreb eatsbydreche ap.com/]beat s<strong><a href="http:/ /www.morebea tsbydrecheap .com/">beats by dre color</a></s trong> <br> <strong><a href="http:/ /www.morebea tsbydrecheap .com/">beats by dre mixr</a></st rong> <br>
omentomikel
[b][url=http ://www.coach -handbags.or g/]coach satchel handbags[/ur l][/b] [b]<a href="http:/ /www.coach-h andbags.org/ ">coach tote bags</a>[/b] e Zone Press` writes created by extraordinar y guidance and basketball skilled guide. `In all the writing of the t
omentomikel
<strong><a href="http:/ /www.hot-rap -beats.com/" >beats dre headphones</ a></strong> <br> <strong><a href="http:/ /www.hot-rap -beats.com/" >cheap beats dre</a></str ong> <br> <strong><a href="http:/ /www.hot-rap -beats.com/" >beats by dre</a></str ong> <br> <br>

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


News Feeds
The Register
Microsoft joins the
fitness tracking
wearables peloton
Amazon"s hybrid
cloud: EC2 wrangled
by Microsoft"s
control freak
NASA: Spacecraft
crash site FOUND ON
MOON RIM
Remember Internet2?
It"s now a
software-defined
metacloud
Carders offer
malware with the
human touch to
defeat fraud
detection
Mozilla releases
geolocating WiFi
sniffer for Android
Twitter, IBM, in
deal to create
brainy Big Blue
Bird
Drupalocalypse!
Devs say it"s best
to assume your CMS
is owned
Big Retail: We
don"t hate Apple,
just the credit
card companies
Has the United
Nations taken over
the Internet yet?
Slashdot
The Most Highly
Cited Scientific
Papers of All Time
Secret Policy
Allows GCHQ Bulk
Access To NSA Data
Technology Group
Promises Scientists
Their Own Clouds
Google Announces
Project Ara
Developer
Conference, Shows
Off First Prototype
Imagining the
Future History of
Climate Change
CERN Looking For
Help Filling In the
Gaps In Photo
Archive
"Ambulance Drone"
Prototype Unveiled
In Holland
Security Companies
Team Up, Take Down
Chinese Hacking
Group
Check Out the
Source Code For the
Xerox Alto
HP Unveils
Industrial 3D
Printer 10X Faster,
50% Cheaper Than
Current Systems
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 5041 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