我们有一个用WiX构建的msi安装程序,它安装了我们应用程序的文件。在这些文件中有一个用ASP.NET Core构建的网站。我们没有在msi中进行任何IIS配置。最近我发现,当在IIS中手动创建一个使用网站文件的网站时,当执行升级时,该网站是活动的,然后重启管理器将尝试重启/关闭IIS,但失败,并显示以下错误消息:Application 'C:\Windows\System32\inetsrv\w3wp.exe' (pid 45896) cannot be restarted - Application SID does not match Conductor SID..
此错误消息有点令人困惑,因为我们正在以管理员身份运行msi,所以我们应该有足够的权限来重新启动应用程序?
我们希望避免需要重新启动,所以我尝试添加一个自定义操作,以便在重新启动管理器确定是否需要重新启动之前停止网站。我做了一些搜索,发现该自定义操作应该安排在InstallValidate之前(在此处找到:https://stackoverflow.com/a/3221478)的数据。
但是即使我在InstallValidate之前安排了自定义操作,我仍然会弹出需要重新启动的弹出窗口。即使更早地安排自定义操作(甚至尝试在CostInitialize之前执行)也没有什么区别。从我所做的日志来看,重启管理器似乎在任何自定义操作执行之前运行。
因此,在我的日志中,我很早就发现了这些日志消息:
Line 111: MSI (c) (78:DC) [10:06:29:463]: PROPERTY CHANGE: Adding MsiSystemRebootPending property. Its value is '1'.
Line 939: MSI (s) (28:5C) [10:06:45:645]: PROPERTY CHANGE: Adding MsiSystemRebootPending property. Its value is '1'.
稍后执行我的自定义操作:
Line 1453: MSI (s) (28:5C) [10:06:50:977]: Doing action: StopInstallationFolderSites
在日志中,我看到保存使用中文件的网站已正确关闭,但在日志中,我还看到以下内容:
Line 2800: MSI (c) (78:94) [10:06:54:178]: RESTART MANAGER: Session opened.
Line 2801: MSI (s) (28:5C) [10:06:54:257]: Note: 1: 1610
Line 2802: MSI (s) (28:5C) [10:06:54:257]: Transforming table Error.
Line 2804: Tijdens de installatie moeten bestanden of services worden bijgewerkt die niet kunnen worden bijgewerkt als het systeem actief is. Als u wilt doorgaan, dient u de computer opnieuw op te starten om de installatie te voltooien.
最后一行是本地化的错误消息,显示在安装程序UI中。
因此,即使我的自定义操作是关闭有文件正在使用的应用程序,我仍然得到弹出窗口重新启动机器。有没有办法我可以关闭网站释放文件之前,重新启动管理器确定是否需要重新启动?
1条答案
按热度按时间bf1o4zei1#
在属性表中设置MSIRESTARTMANAGERCONTROL=禁用属性。