【问题标题】:Install4j: installing a serviceInstall4j:安装服务
【发布时间】:2016-02-15 16:47:20
【问题描述】:

对于我的安装,我正在尝试将我的数据库服务器(即 postgresql)和我的应用程序服务器都安装为服务。我知道可以通过以管理员身份从控制台使用pg_ctl 安装postgres。但据我所知,java 不可能在管理模式下启动cmd.exe。所以我希望能够通过Install4j来实现它。我看到了示例“hello”项目。但它在那里创建了一个启动器。但就我的 postgresql 而言,我需要运行 pg_ctl 和一些参数。对于应用程序服务器,我有自己的批处理文件作为执行程序。对于 PGSQL,我尝试提供 Windows 参数,即-N service_name -D data_folder。但是对于这两种情况,它都无法启动服务。我还尝试从 Windows 中的“服务”菜单手动尝试它无法启动。我将帐户设置为“本地系统”。

我也尝试使用“运行可执行文件或批处理文件”操作运行pg_ctl,但我仍然无法在 Windows 服务列表中找到该服务,更不用说来自command prompt 的相同参数可以正常工作。我已经添加了我在项目中使用的动作属性的图。

【问题讨论】:

    标签: java postgresql windows-services install4j


    【解决方案1】:

    如果您的安装程序已执行“请求权限”操作,并且您使用“运行可执行文件或批处理文件”操作执行 pg_ctl.exe,它将以管理员权限执行,因为“操作提升类型”的默认值" 该操作的属性是“提升到最大可用权限”。

    【讨论】:

    • 好的。但是这个选项“工作目录”在“运行可执行文件或批处理文件”操作中究竟指的是什么?另外,假设我可以为 postgres 执行此操作,但是我想注册/安装为 Windows 服务的批处理文件呢?
    • 工作目录可能无关,可以设置为“.” (不带引号)。批处理文件不能用作 Windows 服务。
    • 我尝试了“运行可执行文件或批处理文件”操作,但仍然无法使其工作。为了获得更好的细节,我已经编辑了我的问题。
    • 在action的配置中,应该将stderr和stdout重定向到日志文件,并分析pg_ctl命令的输出。
    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多