我已经完成了应用程序的开发,现在是时候将其交付给客户了。由于它是一个小于5 MB的5文件应用程序,我决定最简单、最精简的交付方式是将其作为RARSFX/ZipSFX文件,该文件被指示解压缩临时文件夹中的所有内容,然后在我的项目中启动主可执行文件。
到目前为止一切正常,我选择ZipSFX作为默认格式,但问题是我设计了我的主exe来接受参数(即-batch(处理一批文件)和-nolang(不本地化应用程序)。然而,当使用ZipSFX打包时,用户实际上会将参数传递给安装程序,而不是主exe。
是否有将参数"路由"到主应用程序的方法?提前谢谢。
根注释很有趣。。。
如果你真的不想通过解包运行清理场景来安装程序,那么寻找安装程序没有多大用处,我同意。一种方法是研究PortableApps。他们经常用更复杂、更严格的程序来实现这些技巧,而且可能有很好的工具来实现
另一种方法是将所需的文件作为资源存储在主应用程序中,然后解压缩到%TEMP%并在那里使用表单,并在退出时删除。这就是SysInternal工具安装临时驱动程序的方式。最基本的方法应该是使用Microsoft资源编译器。像Delphi这样的一些语言有其用于数据存储的本地组件。
这样做,你可以制作一个小的stub exe,即drop-shot主应用程序,运行它,等待完成和清理(与主程序崩溃相比更可靠),或者让你的主程序自己完成所有这些(但如果崩溃或以不寻常的方式退出,它会留下垃圾)您可以选择使用UPX等工具打包的dropper到eb,但主exe和DLL应该保持未打包状态。
您可以用cache-dir标记临时文件,以提供一个小提示,如果发现它们不正确,您可以自由删除它们。
您看过InnoSetup吗?它是用Delphi编写的,所以可能很容易使用,开销很小。我认为你可以很容易地编写脚本来传递一些参数。
你试过7拉链sfx吗?一些像Opera这样的安装程序是在它之后制作的。
7-zip库存SFX似乎将参数传递到了链的下游。http://sourceforge.net/projects/sevenzip/forums/forum/45798/topic/4788506
7-zip扩展的SFX具有特殊选项,可以将其余参数传递到链的下游。http://7zsfx.info/en/switches.html#breakcmdline