2

目前我有一个 VBScript '应用程序' 来支持发送给客户端运行,然后客户端发送回一个带有结果的 HTML 文件。从角度来看,输出本质上与Absolute Dynamics的 Syscomp.exe 相似,只是我的是单个 .vbs 文件并且没有“比较”功能。

问题:对这个支持工具的需求在不断变化,它的范围/目的越来越大——我发现太大了,VBScript 不再是正确的工具。理想情况下 - 我的新工具将具有自定义机制。例如,我不必对所有需求/要查找的内容进行硬编码,而是可以有一个配置文件,例如 App.config,或者更好的是,一个带有我自己的标记模式的 XML 文件,它可以是根据每个客户的需要作为应用程序的一部分提供。注意:我要求“不安装”,因为这会不断变化,安装程序会使其不那么灵活;我们不会在每次发送时都要求客户安装。

我想要的解决方案:我需要迁移到更通用的平台。.Net 非常理想,因为我们已经是 .Net 商店。尽管如果使用 .Net,我无法想出一个解决方案来以与我已经使用当前 VBScript(单个实体)相同的方式进行分发,那么如果提到其他通用编程框架,我将考虑它们。

我试过的:

  • DotNetZip,感谢 Cheeso 对这个 SO 问题的帮助:从压缩的“zip”文件运行 .Net 应用程序。我能够使用它来发布一个支持 DLL 和 App.config 的 .Net EXE,所有这些都包含在一个自解压的 ZIP 中。不幸的是,这在 Windows XP 中不起作用,除非我遗漏了什么。编辑:确认这是 Windows XP 和 Windows Vista 的限制,而不是 DotNetZip。我需要我的解决方案才能在 XP 上工作(许多客户端都有 XP 或 Windows 2003 Server 场)

  • 7Zip - 不满足我的需求,因为在我“构建”了我的解决方案后,我无法将 .config 添加到 .7z 存档中。我可以将文件添加到在 DotNetZip 中创建的 SFX 中,只需将其重命名为“.zip”,添加新的 .config,然后删除 .zip 扩展名。

  • NBox将无法工作,因为任何配置文件(例如 app.config)的打包都需要成为我构建过程的一部分。我需要一个配置,我可以在任何时候在构建过程之后/之外简单地“插入”,并将其作为最终产品交付的一部分

  • Coffee Cup 的 Zip Wizzard在没有用户干预的情况下无法解压文件。也不允许运行 EXE 后解压

  • NirSoft 的 Zip 安装程序。不符合我的要求,因为它仍然会提示最终用户在哪里安装文件。

  • ZIP 2 安全 EXE。不幸的是,这也没有成功,尽管我不记得缺点是什么

  • 纳尔。这不起作用,因为它需要运行安装。除此之外,它可能会奏效。

问题:

  • 考虑到我的要求,这可能吗?如果是这样,我应该从哪里开始,例如上面提到的第三方,或者我错过的第三方?
  • 有没有人遇到过我遇到的类似情况,但选择了除单个文件/实体应用程序以外的其他途径,并愿意分享?

要求:

  • 必须是单个实体(例如 EXE 或 ZIP)
  • 必须能够支持至少一个配置文件,支持 DLL 等。一个“强大”的应用程序。编辑:例如,在我的代码构建后,可以将其压缩为自解压 ZIP。任何人都可以通过 XML 配置“自定义”它,然后将 .exe 重命名为 .zip,放入他们的配置,然后一起发送。
  • 必须在 XP 和转发中工作。编辑:我们假设 .Net 运行时已经安装(至少 v3.5)
4

1 回答 1

4

从根本上说,如果没有一些外部“东西”,您无法通过 .net 应用程序支持 XP - XP 没有作为标准安装的任何版本的 .net,因此您可能必须要求用户在您的应用程序运行之前安装 .net 运行时. 从好的方面来说,如果您使用 .net 4.0,那么当您运行程序时,它会告诉用户他们需要 .net 4 运行时,而不是像早期的 .net 应用程序那样简单地崩溃。

如果我们假设预安装 .net 一次是可以的,那么有很多选择:

您可以将所有代码放入一个项目中,从而构建一个独立的程序集 (.exe)

或者,如果您有许多 dll,您可以使用 ILMerge 之类的工具在发布之前将它们全部合并到一个 .exe 中,或者您可以将 dll 作为数据资源嵌入到 .exe 中,然后使用应用程序的 AssemblyResolve 事件允许您根据系统需要从资源中加载 dll 数据。或者将 dll 作为数据文件嵌入,然后“自动安装”它们(将它们保存到 .exe 旁边的磁盘或 GAC 中),这是您的程序在调用它以这种方式提供的任何 dll 之前所做的第一件事.

另一部分是您的应用程序必须是独立的 - 它需要的任何设置/首选项/资源都需要由应用程序本身设置 - 例如,您可以从注册表中读取首选项设置,如果它不存在, 使用默认值。如果您有一个 XML 配置文件,则将其作为资源嵌入,或者直接从资源中读取,或者在启动时自动安装,这样您的应用程序就可以“自我安装”并且完全自包含。

于 2012-02-22T22:52:18.577 回答