好吧,所以我正在用C#编写我自己的安装程序,而我想要做的就是把文件放在.exe中,所以我可以做File.Copy(file,filedir);
或者,如果这是不可能的,还有另一种方法可以做我想做的事情吗?
我不会编写自己的安装程序代码,但如果您真的想将文件嵌入到程序集中,则可以使用强类型资源.在项目的属性对话框中,打开"资源"选项卡,然后添加文件.然后,您将能够使用以下命令获取该文件:
ProjectNamespace.Properties.Resources.MyFile
然后,您将能够使用以下方法将嵌入式资源写入磁盘:
System.IO.File.WriteAllBytes(@"C:\MyFile.bin", ProjectNamespace.Properties.Resources.MyFile);
老实说,我建议你不要创建自己的安装程序.创建安装程序有很多问题.即使是大型安装程序制造商也不再制作他们自己的实际安装程序,他们只是创建自定义MSI包.
使用Mirosoft Installer(MSI).这是正确的做法.为它制作自己的自定义前端,但不要重新创建已存在的非常复杂的轮子.
更新:如果您只是为了学习而这样做,那么我会回避将其视为"安装人员".你有可能想要接受你的"研究"并在某一天使用它,坦率地说,当新版本的Windows出现时,我们最终会遇到这么多问题.人们创造自己的轮子,假设是无效的.
您真正想做的事情被称为"打包",您必须非常熟悉可执行PE格式,因为您正在谈论更改磁盘上PE映像的结构.
您可以将文件放入资源中来模拟它,但这并不是安装程序或自解压程序所做的.
这是Self-Extractor教程的链接,但它不在C#中.
我不太了解.NET PE要求,知道是否可以使用托管代码可执行文件执行此操作.
UPDATE2:这可能是你正在寻找的更多内容,它将文件嵌入资源中,但正如我所说,它并不是专业安装程序或自解压程序的方式.我认为你可以嵌入什么资源有各种限制.但这就是用C#编写的Self-Extractor Demo.