Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
Wix-在安装之前运行批处理脚本(用于删除以前的安装)?_Wix_Wix3.5 - Fatal编程技术网

Wix-在安装之前运行批处理脚本(用于删除以前的安装)?

Wix-在安装之前运行批处理脚本(用于删除以前的安装)?,wix,wix3.5,Wix,Wix3.5,我所拥有的: 通过msi包推出服务的目的(在services.msc中列出) 该服务正在使用自定义DLL 具有自定义操作的InstallExecuteSequence 未安装用于安装 已安装用于卸载 到目前为止,该服务是在没有msi包的工作站上手动安装的 并且没有注册为应用程序(因此它没有显示在appwiz.cpl中) 问题是: 如果服务(来自上一次安装)正在运行,我不知道如何在复制文件之前停止它(当然,更新DLL的基本要求是没有任务正在使用它们) 即使服务(来自上一次安装)未运行,也不会

我所拥有的:

  • 通过msi包推出服务的目的(在services.msc中列出)
  • 该服务正在使用自定义DLL
  • 具有自定义操作的InstallExecuteSequence
    • 未安装
      用于安装
    • 已安装
      用于卸载
  • 到目前为止,该服务是在没有msi包的工作站上手动安装的 并且没有注册为应用程序(因此它没有显示在appwiz.cpl中)
  • 问题是:

    • 如果服务(来自上一次安装)正在运行,我不知道如何在复制文件之前停止它(当然,更新DLL的基本要求是没有任务正在使用它们)
    • 即使服务(来自上一次安装)未运行,也不会更新任何文件
    所以我想要的是:

    • 我只是想用我的全新msi软件包和更新的DLL以及所有这些东西来覆盖现有的安装
    解决方案是什么:


    是的,希望它能很快出现在我的文字下面:)也许标题不是很好,那是因为我不知道如何进一步…

    让你摆脱困境的最简单方法是编写一个使用ServiceInstall和ServiceControl元素的安装程序(删除两个值的属性)来定义服务。将文件定位到一个以前未使用过的新目录,这样您的引用计数就不会全部混乱。使用RemoveFile元素删除文件的旧安装,以获得良好的效果。我们的目标是能够升级删除折叠文件并卸载所有内容


    如果旧文件没有一致地部署到同一个目录,则必须列出已知目录的列表并编写重复的RemoveFile语句,或者编写搜索并删除文件的自定义操作。(次优)

    让您摆脱困境的最简单方法是编写一个安装程序,使用ServiceInstall和ServiceControl元素(具有两个值的Remove属性)定义服务。将文件定位到一个以前未使用过的新目录,这样您的引用计数就不会全部混乱。使用RemoveFile元素删除文件的旧安装,以获得良好的效果。我们的目标是能够升级删除折叠文件并卸载所有内容


    如果旧文件没有一致地部署到同一个目录,则必须列出已知目录的列表并编写重复的RemoveFile语句,或者编写搜索并删除文件的自定义操作。(次优)

    服务控制元素:很酷的事情,但我有一个类似的问题:如果以前(手动)安装的服务在运行msi包时仍在运行,则弹出窗口询问要做什么(停止服务,取消,…)


    最后,我将卸载旧版本与新安装例程分离开来。我简单地编写了一个批处理脚本,它在msi包运行之前运行

    ServiceControl元素:很酷,但我遇到了一个类似的问题:如果以前(手动)安装的服务在运行msi包时仍在运行,则弹出窗口询问该怎么做(停止服务、取消……)

    最后,我将卸载旧版本与新安装例程分离开来。我简单地编写了一个批处理脚本,它在msi包运行之前运行

    试着读一下:重要的部分是:。你能展示你所有的代码吗?试着读一下:重要的部分是:。你能出示你所有的密码吗?