gpt4 book ai didi

c++ - 包含C++ Builder Windows服务的Wix安装程序包

转载 作者:行者123 更新时间:2023-12-02 10:12:03 30 4
gpt4 key购买 nike

我有一个使用Wix工具集制作的安装包,其中包括使用Embarcadero的C++ Builder创建的服务。如果与Visual Studio C++ / C#相比,ECB在Windows下具有不同的语法来注册/注销服务,但我无法通过常规的Wix元素<ServiceInstall>来注册服务,安装程序在服务注册/取消注册时冻结。
我通过Wix Custom Actions找到了解决方案。我创建了以下操作:

    <CustomAction
Id="LaunchApp_SrvInstall"
Directory="INSTALLDIR"
Impersonate="no"
Execute="deferred"
ExeCommand="&quot;[INSTALLDIR]ACService.exe&quot; /install /silent">
</CustomAction>
<CustomAction
Id="LaunchApp_SrvUninstall"
Directory="INSTALLDIR"
Impersonate="no"
Execute="deferred"
ExeCommand="&quot;[INSTALLDIR]ACService.exe&quot; /uninstall /silent">
</CustomAction>

<InstallExecuteSequence>
<Custom Action="LaunchApp_SrvInstall" After="InstallFiles">NOT REMOVE</Custom>
<Custom Action="LaunchApp_SrvUninstall" Before="RemoveFiles">REMOVE ~= "ALL"</Custom>
</InstallExecuteSequence>
使用以上语法,在软件包安装期间,将文件复制到安装目录后,我已经注册了服务,并且如果我要卸载软件包,则在删除已安装文件之前,将取消注册服务。在两种情况下,它都能完美运行。
当我尝试将软件更新到较新版本时,会遇到我遇到的问题,这种情况是软件和服务正在运行,而用户尝试安装新的MSI软件包以更新整个解决方案。在这种情况下,我将显示以下弹出窗口:
enter image description here
似乎在更新过程中,安装程序尝试两次注册该服务,但我不知道为什么。这里有没有人已经遇到过这种情况?有没有一种方法可以将“自定义操作”配置为在软件包更新期间也可以工作?

最佳答案

在评论中给出了有用的提示之后,当我将Embarcadero IDE的属性名称 DisplayName 与WiX安装程序项目源的名称 DisplayName 标记相关联时,一切都将起作用,并且在<ServiceInstall>中定义参数标记
enter image description here
enter image description here
而已。现在,我可以使用WiX处理服务了。我非常有信心上面的细节对Delphi编译器也有效。

关于c++ - 包含C++ Builder Windows服务的Wix安装程序包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63174368/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com