Problem Summary
Engineers deploying TIA Portal V15 (Step 7 + WinCC Advanced) on a Windows 10 1909 image — particularly one built inside a virtual machine — frequently encounter a soft install failure in which Setup reports roughly 20–25 minutes of remaining work, then prompts for a system restart, registers a Siemens.Automation.Setup scheduled task to continue after the reboot, and then never resumes. When the task is started manually, the symptom repeats: a few minutes of work, a restart prompt, no progress. The Summary log shows every component reaching the state OK through ClassicCompAfterUninstall, and the last OK entry is immediately followed by OKCallCurrentAfterReboot for the setup unit INSTSQL2014EXP. The installer is not actually crashing; it is asking the OS to reboot because the SQL Server 2014 Express prerequisite cannot complete, and the post-reboot continuation path is broken.
Symptoms and Observable Indicators
| Indicator | Observed Value | Normal Expected Value |
|---|---|---|
| Setup elapsed time before halt | 2–3 min | 30–90 min for full V15 + WinCC Adv |
| Last reported remaining time | 20–25 min, then drops to restart prompt | Decreases monotonically to 0:00 |
| Scheduled task name |
Siemens.Automation.Setup (or similar GUID-suffixed) |
Created, fires once, deletes itself |
| Reboot actually occurs | No | Yes (one-time automatic) |
| Last OK step in Summary.log | ClassicCompAfterUninstall |
InstallationComplete |
| Failing setup unit | INSTSQL2014EXP |
n/a |
| Pending file rename entries (PendingFileRenameOperations) | One or more entries with !\??\... in HKLM\SYSTEM\CurrentControlSet\Control\Session Manager |
Empty after reboot |
The single most reliable signal that the install is stuck in this loop — as opposed to a hard crash — is the PendingFileRenameOperations registry value. If the value contains !\??\<path-to-msi-or-dll> entries that persist after a manual restart, the OS is being asked to rename a file that is still locked by another process (most often a sqlservr.exe or setup.exe instance). TIA Setup registers the rename request, asks for a reboot, and the system is then supposed to perform the rename early in boot. When the rename cannot be completed (file truly locked, AV interference, snapshot/AVHDL state in a VM, or UWF overlay), the scheduled continuation task is created but the OS never reaches the point at which the task can fire.
Root Cause Analysis
Three independent failure layers overlap in the reported scenario. Each must be ruled out before declaring the install truly clean.
Layer 1 — SQL Server 2014 Express prerequisite cannot complete silently
The setup unit INSTSQL2014EXP invokes Microsoft's SQL Server 2014 Express installer (typically the bundled SQLEXPR_x64_ENU.exe or the wrapped MSI) under a deferred custom action. TIA Portal V15 was originally targeted at SQL 2014 SP2; later updates (V15.1) accept SQL 2014 SP3. The component runs as a system-context service, requests a file rename (often of the in-use mssqlsystemresource.mdf or of the MSSQL$INSTANCE data files), and then writes a REBOOT=ReallySuppress flag that the TIA bootstrap interprets as "ask the user for a reboot." If the MSI logs (see Log File Locations below) show return code 3010 with no further progress, the SQL installer is waiting on a locked file. Typical lock owners in this scenario:
- Stale
sqlservr.exefrom a previously aborted install (visible intasklist /v | findstr sql). - AV real-time scanner holding the MSI/MSP handle (
MsMpEng.exe,coreServiceShell.exe, etc.). - A VSS writer inside the VM (Hyper-V
vmicheartbeat, VMTools, or the host AV's filter driver) that keeps the AVHDL metadata file locked. - Windows Update delivering a pending component cleanup that itself requested a reboot.
Layer 2 — VM-aware install path diverges from physical path
TIA Portal Setup performs several hardware and feature checks at the start of the install. On virtual hardware, a number of features are toggled off or installed in a degraded mode. In practice, the ClassicCompAfterUninstall / OKCallCurrentAfterReboot transition is most often seen on:
- VMware Workstation / Fusion VMs with Disable Side Channel Mitigations enabled (causes Setup to mis-detect CPU features).
- Hyper-V Generation 2 VMs with Secure Boot enabled (the SQL installer cannot write the requested registry keys under SYSTEM without a writable TPM-anchored store).
- Generation 1 VMs with a synthetic SCSI controller (firmware/driver mismatch with the SQL Express
MsftEditservice account bootstrap). - Any VM with the Memory Integrity / Core Isolation Windows feature enabled on the guest.
Layer 3 — Scheduled-task continuation path does not fire
The continuation task is created under \Microsoft\Windows\Setup\ or in the root folder, owned by SYSTEM. It triggers Siemens.Automation.Setup.exe --resume with a registry-stored phase token. If the task is created but the NextRunTime value is in the past when the OS boots, or if the SYSTEM account cannot read the HKLM\SOFTWARE\Siemens\Automation\Setup phase key (very common when the build is run from a sysprepped or ungeneralized image), the task silently exits. Running the task manually via Task Scheduler confirms only that the executable is invokable — it does not confirm that the phase key resolves.
Pre-Installation Diagnostic Checklist
Run the following checks on the affected image and capture output. Each command returns a deterministic value that drives the decision tree below.
-
Confirm OS build and edition
Expected: 18363.x on a Pro/Enterprise SKU. SAC/LTSC mismatch is a known TIA-V15 failure trigger.winver reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentBuildNumber /v ProductName -
List all installed SQL-related components
Ifwmic product where "name like '%%SQL%%'" get name,version,vendor /format:list sc query MSSQL$SIAUTO sc query MSSQLSERVERsc query MSSQL$SIAUTOreturns STOPPED with a non-zero Win32 exit code, the TIA-internal instance is in a corrupted state from a prior failed install. -
Inspect pending reboots
Any non-empty result in the first two keys, or anyreg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" 2>nul reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" 2>nul reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager" /v PendingFileRenameOperations!\??\entry in the third, must be cleared before a new install attempt. -
Confirm VM platform
System Manufacturer values of "VMware, Inc.", "Microsoft Corporation", "innotek GmbH" (VirtualBox), or "QEMU" confirm a virtual platform. See Solution 2 below for the recommended build strategy.systeminfo | findstr /C:"Host Name" /C:"OS Name" /C:"System Manufacturer" /C:"System Model" -
Confirm no UWF or AppLocker overlays
Unified Write Filter and AppLocker DLL/EXE rules both prevent the SQL installer from completing the in-use file rename.uwfmgr get-configuration 2>nul | findstr /C:"Filter" Get-AppLockerPolicy -Effective | Format-List
Solution 1 — Clean the SQL Environment and Reinstall from Scratch
This is the path documented in multiple Siemens Support Request resolutions for the INSTSQL2014EXP hang. It is also the most repeatable. The principle: remove every trace of SQL 2014 (and any later SQL component that TIA might re-detect), reboot, and let TIA Portal V15 install SQL 2014 Express itself.
Step-by-step
- Stop all SQL services and set them to disabled:
net stop MSSQL$SIAUTO 2>nul net stop MSSQLSERVER 2>nul sc config MSSQL$SIAUTO start= disabled sc config MSSQLSERVER start= disabled - Uninstall the SQL 2014 management tools and any TIA-internal instance remnants:
The MSI GUIDs for the typical TIA V13/V14 components are:wmic product where "name like 'Microsoft SQL Server 2014%%'" call uninstall /nointeractive msiexec /x {GUID} /quiet /norestart
Always confirm the GUID on the target image withComponent MSI Product Code (x64 ENU) SQL Server 2014 Management Tools - Basic {54DEA7B7-2A04-4FE3-A4EC-5C7B0D9CA11C}SQL Server 2014 Management Studio {4A8B6C39-2D1C-4B4F-8E5A-3B7C8A2C5B61}TIA internal MSSQL$SIAUTOinstanceDetected via HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQLwmic product get name,identifyingnumber; do not assume the values above apply to a localized build. - Delete the residual SQL directories (no uninstaller does this for the data files):
rmdir /S /Q "C:\Program Files\Microsoft SQL Server" rmdir /S /Q "C:\Program Files (x86)\Microsoft SQL Server" rmdir /S /Q "C:\ProgramData\Microsoft\SQL Server" rmdir /S /Q "%LOCALAPPDATA%\Microsoft_Corporation\Siemens_Automation_..." 2>nul - Clear the Windows Installer database of any pending TIA / SQL entries:
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\InProgress" /f reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\<SIAUTO_GUID>\InstallProperties" /f 2>nul - Reboot, then re-verify with the diagnostic checklist above. The
PendingFileRenameOperationsvalue must be empty. - Launch
Start.exefor TIA Portal V15 from an elevated command prompt. Run it fromcmd /c Start.exe /Sso the install log path resolves to a known location.
SIAUTO instance that is rebuilt from the TIA media on first use. As long as the corresponding TIA V13/V14 setup media is available, restoring the SQL component is a matter of running the original Setup. In a production image, do not perform this on a machine that must remain TIA V13/V14-functional without the original installers.
Solution 2 — Build the Image on Physical Hardware, Then Image to VM
For environments where multiple TIA versions must coexist on the same image (V13 SP2, V14 SP1, V15, V15.1, V16 is a common field requirement), the most reproducible procedure reported by controls IT departments is:
- Build the base Windows 10 1909 image on a physical workstation with the target CPU family (typically Intel Core i5/i7 8th gen or newer, or Xeon E3, to match the field controller fleet).
- Run TIA Setup in this physical environment, in the order: V13 SP2 → V14 SP1 → V15 → V15.1 → V16, with a reboot between major versions.
- Sysprep the physical image to OOBE, shut down, and capture with the same imaging tool (Acronis, Clonezilla, or vendor-specific). Do not generalize with the V16 portal already running.
- Deploy the captured image to a Generation 2 Hyper-V VM or to a VMware Workstation 16.x VM, re-run Windows activation, and re-arm each TIA version's licensing.
The physical-first build avoids the VM-specific path in the TIA Setup scripts, including the SQL Express silent-mode flags. VMs created from such an image do not exhibit the INSTSQL2014EXP reboot loop because the SQL instance is already installed and re-detected on first use.
Solution 3 — Manually Provision the SQL 2014 Express Instance
If the bootstrap installer repeatedly stalls at OKCallCurrentAfterReboot for INSTSQL2014EXP, the SQL instance can be installed manually using the SQL media bundled inside the TIA Portal V15 installer package. The location depends on the DVD layout:
DVD_1\Support\SQL_Server_2014\SQLEXPR_x64_ENU.exe
DVD_1\Support\SQL_Server_2014\ConfigurationFile.ini
Recommended manual install command
DVD_1\Support\SQL_Server_2014\SQLEXPR_x64_ENU.exe ^
/QS /IAcceptSQLServerLicenseTerms ^
/ACTION=Install ^
/FEATURES=SQLEngine ^
/INSTANCENAME=SIAUTO ^
/SQLSVCACCOUNT="NT AUTHORITY\SYSTEM" ^
/SQLSYSADMINACCOUNTS="BUILTIN\ADMINISTRATORS" ^
/SECURITYMODE=SQL ^
/SAPWD="<strong-password>" ^
/TCPENABLED=1 /NPENABLED=0 ^
/HideConsole ^
/ERRORREPORTING=0 ^
/LOG="C:\Temp\SQLSetup_Man.log"
After the instance starts successfully (sc query MSSQL$SIAUTO returns RUNNING), re-launch TIA Setup. The bootstrap will detect the pre-installed instance, skip the INSTSQL2014EXP deferred action, and continue from OKCallCurrentAfterReboot directly into the WinCC Advanced component install. The same approach works for the WinCC SQL instance name SIAUTOWINCC when the failure shifts to the WinCC-specific setup unit.
NT AUTHORITY\SYSTEM for the service account on an isolated controls image, exactly as the bundled TIA Setup would. Avoid the NETWORK SERVICE account when the image is later deployed to a domain; the SPN registration that TIA expects to find is created only under SYSTEM.
Solution 4 — Repair the Scheduled-Task Continuation Path
If the SQL component is in fact already installed (verify with sc query MSSQL$SIAUTO) and the install is just looping on the post-reboot task, repair the task itself:
- Open Task Scheduler → look for tasks under
\with names starting withSiemensor containingSetup_. - Identify the most recent task. The Last Run Result column shows the Win32 error code; the canonical value in this failure is
0x800710E0(the operator or administrator has refused the request) or0x80071069(the system cannot find the file specified). - Export the task as XML, then edit the
<Triggers>block to set<Enabled>true</Enabled>and to add a<Repetition>element:<Triggers> <BootTrigger> <Enabled>true</Enabled> <Delay>PT120S</Delay> </BootTrigger> <Repetition> <Interval>PT5M</Interval> <Duration>PT1H</Duration> <StopAtDurationEnd>false</StopAtDurationEnd> </Repetition> </Triggers> - Re-import the task, run it once manually, and watch the TIA Setup GUI resume from the Post-Install Configuration phase.
Log File Locations
Capture all of the following before opening a Siemens Support Request. They are the minimum required to triage the INSTSQL2014EXP hang without re-running the install.
| Log | Path | What to look for |
|---|---|---|
| TIA Setup summary | %TEMP%\Siemens\Automation\Summary.log |
Last OK step and failing setup unit name |
| TIA Setup deep log | %ProgramData%\Siemens\Automation\Log\Setup.log |
MSI return codes, REBOOT flag transitions |
| SQL Express bootstrap | %TEMP%\Setup_bootstrap\Log\*.log |
MSI exit code 3010, locked-file references |
| SQL Server install summary | %ProgramFiles%\Microsoft SQL Server\140\Setup Bootstrap\Log\<TIMESTAMP>\Summary.txt |
Feature install status, link.exe errors, msoledbsql failures |
| Windows Installer verbose |
setupapi.dev.log + msi*.log in %TEMP%
|
File rename requests, lock holders |
| Pending rename state | HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations |
Specific files OS is being asked to rename |
Troubleshooting Matrix
| Observed Symptom | Likely Layer | First Action |
|---|---|---|
| Restart requested within 2–3 min, never fires | SQL Express prerequisite, Layer 1 | Inspect Summary.log for INSTSQL2014EXP
|
| Manual run of the scheduled task repeats the loop | Layer 3 — phase key missing | Verify HKLM\SOFTWARE\Siemens\Automation\Setup phase key |
| Loops only inside VMware / Hyper-V, physical works | Layer 2 — VM detection path | Re-image from physical build (Solution 2) |
| Reboot does occur, install resumes, then re-asks for reboot | Layer 1, multiple components pending | Manual SQL provisioning (Solution 3) + scan for all !\??\ entries |
| V15 installs, V15.1 fails the same way | Shared component collision with V15 | Uninstall V15 first, install V15.1, then layer V15 on top with matching SP level |
| Install loops even with SQL manually pre-installed | Pending rename for non-SQL file | Clear PendingFileRenameOperations via PendMove / DeleteFile
|
Escalation Path to Siemens Support
When the in-house procedures above do not resolve the issue within one rebuild cycle, the Siemens Industry Online Support portal accepts a Support Request from the gray bar at the top of the page. Attach the Summary log, the deep TIA Setup log, the SQL Express Summary.txt, and the PendingFileRenameOperations export. The fast path is to support.industry.siemens.com; searches for "TIA V15 INSTSQL2014EXP" and "OKCallCurrentAfterReboot" have historically surfaced Siemens-authored FAQs that describe this exact symptom and the order in which to clean up the SQL remnants.
Verification
After a successful install, confirm the following before declaring the image ready for field deployment:
-
sc query MSSQL$SIAUTOreturnsSTATE: 4 RUNNING. - TIA Portal V15 opens, the project tree is populated, and a sample S7-1200 project compiles without "ALM_Internal_NotFound".
- WinCC Advanced launches, the HMI runtime is registered, and a tag can be forced without the "HMI service not running" prompt.
- The
PendingFileRenameOperationsregistry value is empty. - The
\Microsoft\Windows\Setupscheduled task folder contains no leftoverSiemenstasks. - The image is re-sysprepped and re-captured so the next deployee does not inherit the installed-instance GUID.
Why does TIA Portal V15 request a reboot during install and then never actually reboot on Windows 10 1909?
The bootstrap is waiting on the SQL Server 2014 Express prerequisite (INSTSQL2014EXP) to complete, which requires a file rename that is blocked by a locked handle. The OS marks a pending reboot, creates a continuation task, but because the rename cannot be performed, the task is never able to make forward progress. Clearing PendingFileRenameOperations and stopping all sqlservr.exe processes before re-running Setup resolves the loop in most cases.
Is the INSTSQL2014EXP hang specific to running TIA Portal V15 inside a VM?
It is not exclusive to VMs, but it is far more common on virtualized images because Hyper-V, VMware, and VirtualBox add filter drivers and snapshot/AVHDL metadata files that hold MSI/MSP handles open. TIA Setup also branches its behavior on the detected hardware platform. The most reliable workaround reported by IT departments is to build the image on physical hardware first and then capture/imaging it to a VM.
Will uninstalling SQL Server 2014 Management Tools break TIA Portal V13 or V14 already installed on the same image?
Not immediately. TIA V13 and V14 create a private MSSQL$SIAUTO instance that is rebuilt on demand. As long as the original TIA V13/V14 setup media is available, the SQL component is restored by re-running the matching TIA Setup. Do not perform the SQL cleanup on a production image where those versions must remain functional without the original installers.
Can the SQL 2014 Express instance be installed manually to skip the failing TIA step?
Yes. Use SQLEXPR_x64_ENU.exe from the TIA V15 DVD under Support\SQL_Server_2014 with /INSTANCENAME=SIAUTO, /SQLSVCACCOUNT="NT AUTHORITY\SYSTEM", and /SQLSYSADMINACCOUNTS="BUILTIN\ADMINISTRATORS". After sc query MSSQL$SIAUTO reports RUNNING, re-launch TIA Setup; the bootstrap detects the instance and skips the deferred action.
Which log file definitively identifies this exact failure?
The TIA Setup summary log at %TEMP%\Siemens\Automation\Summary.log. The signature is the last OK entry being ClassicCompAfterUninstall followed by OKCallCurrentAfterReboot for the setup unit INSTSQL2014EXP. Cross-reference with the SQL Express Summary.txt under %ProgramFiles%\Microsoft SQL Server\140\Setup Bootstrap\Log; an MSI return code 3010 with no further forward progress confirms the prerequisite component is the source of the hang.