将不同类型的多个文件嵌入到单个c#控制台应用程序中

本文关键字:单个 控制台 应用程序 同类型 文件 | 更新日期: 2023-09-27 18:08:38

编辑,以便更清楚地了解我在做什么。

我有一个控制台应用程序,我正在工作,我想做以下事情:

1)运行msi安装程序来安装一个特定的应用程序

2)将已编写的控制台应用程序复制到Windows盒子的公共文件夹

3)调度运行在Schedule

上复制的控制台应用程序的Windows Task

我使用Microsoft.Win32.TaskScheduler.dll库(第三方)来创建设置任务的代码。当我将exe移动到外部机器时,它不会检测使任务调度器代码工作的dll,似乎也无法访问msi或其他控制台应用程序。

所以我需要一种方法将两个控制台应用程序,msi和dll合并成一个可以在任何机器上运行的exe文件。

我有两个控制台应用程序可用的所有代码,如果需要,可以发布它。

将不同类型的多个文件嵌入到单个c#控制台应用程序中

听起来好像您正在尝试编写一个自提取安装程序,它通常分两个阶段工作:

  1. 将嵌入的资源解包到临时文件夹
  2. 使用临时文件夹
  3. 中的文件开始执行

在c#中,你可以通过将这些文件包含为"嵌入式资源",并使用如下方式将它们保存到磁盘:

string pathToSomeMsi = Path.GetTempFileName();
using (var resStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("theMsi.msi"))
using (var fileStream = File.OpenWrite(pathToSomeMsi))
{
    resStream.CopyTo(fileStream);
}
installMsi(pathToSomeMsi);

话虽如此,我还是建议您不要尝试编写自己的安装程序(或引导程序),因为在处理卸载和修复时,它会相对迅速地变得复杂。只需使用为此目的构建的工具即可。MSI包括添加计划任务的方法(想到的是自定义操作[vbs或。net]),大多数好的安装程序包都包含一个引导程序。

查看Wix, dotNetInstaller, NSIS或类似的