Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi RARSFX/ZipSFX-将参数传递给存档文件中的_Delphi_Parameter Passing_Self Extracting - Fatal编程技术网

Delphi RARSFX/ZipSFX-将参数传递给存档文件中的

Delphi RARSFX/ZipSFX-将参数传递给存档文件中的,delphi,parameter-passing,self-extracting,Delphi,Parameter Passing,Self Extracting,我已经完成了一个应用程序的工作,现在是向客户交付它的时候了。由于它是一个小于5MB的5文件应用程序,我决定最简单、最精简的交付方式是作为一个RARSFX/ZipSFX文件,该文件被指示解压缩临时文件夹中的所有内容,然后在我的项目中启动主可执行文件 到目前为止一切正常,我选择ZipSFX作为默认格式,但问题是我设计的主exe接受参数(即-batch(处理一批文件)和-nolang(不本地化应用程序)。然而,当使用ZipSFX打包时,用户实际上会将参数传递给安装程序,而不是主exe 是否有办法将参数

我已经完成了一个应用程序的工作,现在是向客户交付它的时候了。由于它是一个小于5MB的5文件应用程序,我决定最简单、最精简的交付方式是作为一个RARSFX/ZipSFX文件,该文件被指示解压缩临时文件夹中的所有内容,然后在我的项目中启动主可执行文件

到目前为止一切正常,我选择ZipSFX作为默认格式,但问题是我设计的主exe接受参数(即-batch(处理一批文件)和-nolang(不本地化应用程序)。然而,当使用ZipSFX打包时,用户实际上会将参数传递给安装程序,而不是主exe


是否有办法将参数“路由”到主应用程序?请提前感谢。

您是否查看了InnoSetup? 它是用Delphi编写的,所以可能对您来说使用起来很容易,而且开销很小。我认为您可以很容易地编写脚本来传递一些参数


你试过7-zip sfx吗?一些像Opera这样的安装程序就是在这之后开发的

7-zip stock SFX似乎在链中传递参数。

7-zip扩展SFX具有特殊选项,可将其余参数沿链传递。
根评论很有趣

如果你真的不想通过解包运行清理场景安装程序,那么找安装程序没有多大用处,我同意。1方法是找PortableApps。他们经常用更复杂、更严格的程序来做这些事情,可能有很好的工具来实现

另一种方法是将所需的文件作为资源存储在主应用程序中,然后解压缩到%TEMP%并在那里使用表单,并在退出时删除。 这就是SysInternals工具安装临时驱动程序的方式。 最基本的方法应该是使用Microsoft资源编译器。 有些语言(如Delphi)有其用于数据存储的本地组件

这样做,你可以制作一个小存根exe,删除主应用程序,运行它,等待完成和清理(与主程序崩溃相比更可靠),或者让你的主程序自己做所有这些(但如果崩溃或以不寻常的方式退出,它会留下垃圾) 您可以选择使用UPX等工具打包dropper-to-eb,但主exe和DLL应保持未打包状态


您可以使用cache dir标记临时文件,以发出一个小提示,如果发现这些临时文件有误,您可以自由删除它们。

对我来说,这似乎是在混合概念。典型的安装程序只执行一次,最终用户通常可以选择运行或不运行已安装的产品。无论如何,这是可选的。如果您不允许运行您的产品的用户,不管他们是否无法将参数传递给主exe,他们稍后将通过菜单或命令行执行它,并在适当的参数位置执行。嘿,@jachguate。我不确定我是否正确理解了您的消息,但我想要单个exe而不是可安装的应用程序的原因是因为这是一个文件nsics工具,我希望它具有很高的可移植性。它可能会经常被复制到闪存驱动器和其他可移动媒体上,我不希望它们遗漏任何应用程序的文件。SFX方法本来会很好。这是我的想法,但你提到了安装程序这个词。如果你把你的问题重新表述出来,效果会更好“压缩的exe"或者类似的东西,而不是安装程序。顺便说一句,相对于主exe,更改附带文件的频率有多高?您是否太在意减小文件大小,还是只想将所有文件打包到一个文件中?如果您真的不想通过解包运行清理场景安装程序,我同意,没有办法查找安装程序。那么当前的公式是至少有误导性感谢你的建议,我正在研究Inno和7-zip。我会马上给你回复。再次感谢!完全同意。我研究了7Zip,它不仅难以使用,而且几乎不允许定制。经过一天的调查,我决定创建我自己的滴管。谢谢你的帮助。对于小型的简单应用程序,这将是最好的选择。对于更大的可移植应用程序,Apps工具将更好。顺便说一句,dropper还可以执行其他功能,如更新chacking downloader。我记得看到一些启动器正是为了实现这一目的——能够在网络中滚动新版本,而用户仍在运行(并锁定exe)一个旧的。