WiX安装程序服务文件锁定提示
我有一个WiX安装程序,它在依赖数据库文件的系统上安装Windows服务。卸载过程中,总会出现提示,提示: 另一个应用程序以独占方式访问文件“…\db.mdf”。请关闭所有其他应用程序,然后单击“重试”。 用户需要点击“重试”,然后卸载工作正常。但是,每次卸载时都会出现此提示。我推测原因是,一旦卸载程序尝试卸载服务,ServiceControl尚未完全终止,并且尚未释放其资源(.mdf文件)。我认为“等待”属性应该处理这个问题WiX安装程序服务文件锁定提示,wix,installation,windows-installer,Wix,Installation,Windows Installer,我有一个WiX安装程序,它在依赖数据库文件的系统上安装Windows服务。卸载过程中,总会出现提示,提示: 另一个应用程序以独占方式访问文件“…\db.mdf”。请关闭所有其他应用程序,然后单击“重试”。 用户需要点击“重试”,然后卸载工作正常。但是,每次卸载时都会出现此提示。我推测原因是,一旦卸载程序尝试卸载服务,ServiceControl尚未完全终止,并且尚未释放其资源(.mdf文件)。我认为“等待”属性应该处理这个问题 <ServiceControl Id="ServiceCont
<ServiceControl Id="ServiceControl_Start"
Name="xxmyservicexx"
Start="install"
Remove="uninstall"
Stop="both"
Wait="yes" />
<!-- INSTALL AS SERVICE -->
<ServiceInstall Id="ServiceInstaller"
Type="ownProcess"
Vital="yes"
Name="xxmyservicexx"
DisplayName="xx my service xx"
Description="xxxxxxxx"
Start="auto"
ErrorControl="ignore"
Interactive="no" />
一切正常,卸载也正常,但每次卸载时都会出现提示并不理想。我意识到我可能有点吹毛求疵,但我希望它能正常工作
如何避免出现此提示?假设是服务进程独占访问该mdf文件,并且这是一个时间问题,可能是这样的:
服务进程不再是服务并不意味着包含进程的进程已经终止,只意味着它不再是服务。然后进程必须关闭,如果关闭mdf文件是“惰性”的,那么句柄在进程处于终止的最后阶段之前是不可用的,这可能需要一段时间。如果代码确实显式地关闭mdf文件,那么代码是在服务声明完成之前还是之后关闭mdf文件?我可以想象,该服务可能会很匆忙地告诉windows它已关闭(如果没有关闭,则会出现其他问题),但其余的内部管理工作将在稍后进行,而其余的卸载工作仍在运行 我想可能是这样的。我来看看服务本身是如何处理db访问的。