【问题标题】:open predefined url after setup finished设置完成后打开预定义的 url
【发布时间】:2018-12-05 12:22:13
【问题描述】:

我使用 Inno Setup 构建 myapp (webapp) 最终设置,还使用自定义 Pascal 代码设置先决条件并创建具有 base_URL 的配置文件。

我将服务器名称定义为“域”,端口定义为“主机端口”,设置过程中有一个对话框允许用户输入域和主机端口。

我想在设置完成后打开包含 (http//domain:port) 的 URL。此过程应在运行 myapp 后 5 秒内执行,才能正常工作。

Inno 脚本执行 myapp 如下:

[运行]

Filename: "{app}\{#MyAppExeName}"; Flags: runascurrentuser nowait postinstall skipifsilent hidewizard runhidden; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"

【问题讨论】:

  • "运行 myapp 后 5 秒内执行此过程才能正常工作" - 为什么?听起来像是 hack,而不是正确的解决方案。
  • “大约需要 3 秒” - 这正是我所说的 hack。

标签: inno-setup pascalscript


【解决方案1】:

myapp.exe 设置完成后在后台启动,并执行它的模块,大约需要 3 秒,所以如果 URL 在 myapp 启动它的模块之前打开,则 URL(域:端口)将不会打开,并且会得到 "此页面无法显示)。用于登录myapp(它是Web应用程序)的URL,因此myapp.exe没有加载它的所有模块,登录页面不会打开。

等待任意时间并希望某些后台进程完成,这是不可靠的黑客攻击。

相反,让您的应用程序在完成加载后打开 URL。

【讨论】:

  • 不,您没有以错误的方式提出问题。但是你脑子里有一个解决方案,这是错误的,你一直在坚持。这称为XY problem
  • 让我再试一次:您运行一些需要完成某事的应用程序,然后才能打开一个 URL。我看到了两种解决方案:1)应用程序可以发回信号表明它已完成加载,例如a) 完成自身(应用程序是否继续在后台运行,还是在“加载”后关闭)。 b)发送一些信号(例如,创建一些文件,设置互斥量/信号量) - 你让 Inno Setup 等待信号。 2)或者让应用程序本身在完成加载后执行您需要的操作。如果应用程序自己不知道要打开哪个 URL,请让应用程序在其命令行上接受该 URL。
  • 它是一个web应用,使用postgresql作为数据库引擎,在我的应用安装完成后,出现最后一个安装程序,它有checkbook(运行应用程序),这个复选框与它有关app.exe 我把它放在inno脚本的[run]下,app.exe(相同:源代码中的run.py),所以当我点击完成设置并选中复选框时,应用程序正在运行(来自app.exe它位于 .\program files\myapp\ ),但我在 inno scrip 中设置以使应用程序在后台运行(如服务),
  • 所以弹出的 cmd 显示应用程序运行的模块不会向用户显示,并在桌面上创建了 2 个快捷方式(启动服务器 - 停止服务器)。该应用程序一直在后台运行(通常出现在任务管理器中),直到用户单击快捷方式(停止服务器)。我只需要运行我的应用程序的 Web 界面,url 取决于在设置过程中选择了哪个用户,例如,如果用户输入域:localhost 和端口 20000,那么 myapp 的 url 将是localhost:2000
  • 所以用户可以通过提供用户名和密码来登录应用程序,用户名和密码也是他在设置中设置的,并且此凭据记录在 postgresql 服务器中。
猜你喜欢
  • 1970-01-01
  • 2019-09-22
  • 2016-01-25
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多