Fix TIA Portal V15 Install Hangs on SQL 2014 Express Reboot Loop

David Krause13 min read
SiemensTIA PortalTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

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.

Affected environment: TIA Portal V15 (V15.0 baseline; reproduced on V15.0 + V15.1 combo installs), Windows 10 Enterprise 1909 (build 18363), build-on-VM images with existing SQL 2014 Management Tools from prior TIA V13/V14 deployments. WinCC Advanced components in V15 are more sensitive to this failure path than Step 7 alone.

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.exe from a previously aborted install (visible in tasklist /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 MsftEdit service 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.

  1. Confirm OS build and edition
    winver
    reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentBuildNumber /v ProductName
    Expected: 18363.x on a Pro/Enterprise SKU. SAC/LTSC mismatch is a known TIA-V15 failure trigger.
  2. List all installed SQL-related components
    wmic product where "name like '%%SQL%%'" get name,version,vendor /format:list
    sc query MSSQL$SIAUTO
    sc query MSSQLSERVER
    If sc query MSSQL$SIAUTO returns STOPPED with a non-zero Win32 exit code, the TIA-internal instance is in a corrupted state from a prior failed install.
  3. Inspect pending reboots
    reg 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
    Any non-empty result in the first two keys, or any !\??\ entry in the third, must be cleared before a new install attempt.
  4. Confirm VM platform
    systeminfo | findstr /C:"Host Name" /C:"OS Name" /C:"System Manufacturer" /C:"System Model"
    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.
  5. Confirm no UWF or AppLocker overlays
    uwfmgr get-configuration 2>nul | findstr /C:"Filter"
    Get-AppLockerPolicy -Effective | Format-List
    Unified Write Filter and AppLocker DLL/EXE rules both prevent the SQL installer from completing the in-use file rename.

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

  1. 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
  2. Uninstall the SQL 2014 management tools and any TIA-internal instance remnants:
    wmic product where "name like 'Microsoft SQL Server 2014%%'" call uninstall /nointeractive
    msiexec /x {GUID} /quiet /norestart
    The MSI GUIDs for the typical TIA V13/V14 components are:
    Component 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$SIAUTO instance Detected via HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL
    Always confirm the GUID on the target image with wmic product get name,identifyingnumber; do not assume the values above apply to a localized build.
  3. 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
  4. 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
  5. Reboot, then re-verify with the diagnostic checklist above. The PendingFileRenameOperations value must be empty.
  6. Launch Start.exe for TIA Portal V15 from an elevated command prompt. Run it from cmd /c Start.exe /S so the install log path resolves to a known location.
Why removing SQL 2014 does not break TIA V13/V14 on a single-user image: those versions install a private 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:

  1. 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).
  2. Run TIA Setup in this physical environment, in the order: V13 SP2 → V14 SP1 → V15 → V15.1 → V16, with a reboot between major versions.
  3. 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.
  4. 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.

Account choice: Use 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:

  1. Open Task Scheduler → look for tasks under \ with names starting with Siemens or containing Setup_.
  2. 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) or 0x80071069 (the system cannot find the file specified).
  3. 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>
  4. 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:

  1. sc query MSSQL$SIAUTO returns STATE: 4 RUNNING.
  2. TIA Portal V15 opens, the project tree is populated, and a sample S7-1200 project compiles without "ALM_Internal_NotFound".
  3. WinCC Advanced launches, the HMI runtime is registered, and a tag can be forced without the "HMI service not running" prompt.
  4. The PendingFileRenameOperations registry value is empty.
  5. The \Microsoft\Windows\Setup scheduled task folder contains no leftover Siemens tasks.
  6. 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.

Back to blog