Deploying Windows Feature Update 25H2 Remotely to Multiple Computers

Standard Deployment Method for Windows Feature Update 25H2 (and other feature updates/upgrades such as 24H2, 23H2, 22H2, 21H2 etc) in BatchPatch

If Microsoft has already made the update available to your computer, then unless you are using an old version of BatchPatch (released prior to April 2020), you can deploy Windows Feature Update 25H2 using the standard built-in Windows Update actions in BatchPatch under Actions > Windows updates.

However, there are cases where you might want to deploy the update to your computers after Microsoft has published it for public consumption but before it has been designated for deployment to your individual computers (this can happen because Microsoft does not make the update available to every Windows computer on the planet at the same time– they make it available over a period of time). In the case where the update is publicly available but not yet being offered to your computer, you can still deploy it but you’ll need to use the alternate method that’s explained lower down in this tutorial.

For the typical deployment method, the primary requirement is that the feature update that you wish to install must be offered to the machine and be showing as an available update when you use Actions > Windows updates > Check for available updates in BatchPatch. If you see the 25H2 feature update in that list of available updates for the target computer or group of target computers, then you can just download/install the update on those computers by first modifying the classification filtering in Tools > Settings > Windows Update so that the Include “Upgrades” box is checked.

After the Upgrades classification is selected you can then use Actions > Download available updates in conjunction with Actions > Install downloaded updates or you can just click Actions > Download and install updates. As long as you are operating in standard, non-cached mode in BatchPatch (i.e. cached mode is disabled), feature updates will install (assuming, of course, that you currently have a feature update showing in the list of available updates for a given computer). Note, cached mode is enabled/disabled under Tools > Settings > Windows Update.

Feature Update Deployment Considerations – Update deferral policies, and when an update is only available for “seekers”

Please note there are a couple of things to consider when installing feature updates using the standard non-cached mode BatchPatch update method.

First, as mentioned above, the target computer needs to have the desired feature update showing as one of the available updates for the computer. If you’re expecting to see it but you don’t, it could be because the update is not approved on your WSUS yet, or it could be that you have a Group Policy or Local Policy setting configured for the target computer that is set to defer the installation of feature updates for a specified amount of time. Check your Group Policy configuration for any deferral policies enabled under the following locations:

Computer Configuration > Administrative Templates > Windows Components > Windows Update

Computer Configuration > Administrative Templates > Windows Components > Windows Update > Windows Update for Business

Second, depending at what stage of the rollout Microsoft currently is at the time you attempt to deploy a given feature update, they might not yet be delivering the update through the normal Windows Update channel. They typically begin the rollout with delivery only to “seekers”. This is the name they give to people who manually click on the ‘Check for updates’ button in the Windows Control panel. “Seeker” updates are visible in BatchPatch when you click on ‘Search for only optional software updates

Third, over the past couple/few years Microsoft has made quite a few changes to how Windows Update works, particularly with regard to how feature updates are handled. It’s possible that there is some other reason that I didn’t mention above that is the cause for why you are not seeing the feature update available for installation through the normal Windows Update methods.

Alternate Deployment of Windows Feature Update 25H2 (and other feature updates/upgrades such as 24H2, 23H2, 22H2 or 21H2 etc) with BatchPatch (can be used for deployment to offline target computers)

If you need to deploy feature update version 25H2 (or any other feature update) to target computers that don’t have internet access and don’t have WSUS access and therefore cannot be targeted in standard, non-cached mode (that is to say, you are using either online cached mode or offline cached mode with those target computers, and you are not able to disable cached mode and switch to standard mode for whatever reason), then you may use the method outlined below to deploy the feature update to those computers.

  1. Download (from Microsoft) the Windows 10 or 11 Media Creation Tool. Use this link to download the media creation tool directly from Microsoft. The media creation tool web page contains two options: ‘Update now’ and ‘Download tool now’. Do NOT click on ‘Update now’ because doing so would begin the update process on your computer. Since your goal is to deploy the upgrade to remote computers, instead please click on ‘Download tool now’ to save the tool to your computer. Important: When you run the media creation tool per the next step, you will not have a choice to select which Windows 11 version is used to create the media. This means that if Microsoft releases a new version of Windows 11 when you follow this tutorial, you’ll end up with that version as opposed to the specific version 23H2 that is available today at the time of this writing. If you have another channel for obtaining media for a particular Windows 11 version, such as with a Microsoft volume licensing agreement, you may use that instead of obtaining the media through the steps outlined in this tutorial.
  2. Open the Windows 10 or 11 Media Creation Tool that you saved to your computer a moment ago. IMPORTANT: It is NOT sufficient to run the tool as administrator (using right-click, run-as) from an account that is logged on without admin privileges. For reasons that aren’t fully clear, Microsoft requires that you *must* actually be logged on to the computer with an account that is a member of the local administrators group. Otherwise the tool will not allow you to run it to completion. We don’t know why Microsoft made the tool work this way, but it’s what they did, and presumably it’s for a good reason. So go ahead and log on to your computer as a local administrator, and then launch the tool and follow the rest of this tutorial.
  3. Create installation media with the Windows 10 or 11 Media Creation tool. When the tool is running you’ll have to choose between two options to either ‘Upgrade this PC now’ or ‘Create installation media (USB flash drive, DVD, or ISO file) for another PC. Choose the option to ‘Create installation media…’ and then click ‘Next’.

  4. Choose your language / edition / architecture, and then click ‘Next’.
  5. Choose the media type. For the sake of this tutorial please select ISO as the type of media. After clicking the ‘Next’ button you will be prompted to choose a location on your computer to store the ISO file that will be downloaded/created. Select a directory/location to store the file, and then do something else until the download finishes. Depending on your connection speed it could take some time because it’s something like 4GB in size.


  6. Extract the ISO contents to a location on your local disk. After the download in the previous step is complete you’ll have to locate the file on disk and then extract the contents of the ISO to another folder. I like to use the free 7-zip for this process, but you may use whichever tool you prefer: 7-zip. After the ISO has been extracted you’ll have all of the installation files for the feature update in a single folder.
  7. Configure a deployment in BatchPatch. In BatchPatch click on Actions > Deploy > Create/modify. In the window that pops up for the Deployment configuration, click on the ‘…’ button to browse to the location where your ISO contents have been extracted to, and then choose the ‘setup.exe’ file as the file to deploy. Make sure to check the boxes for ‘Copy entire directoryandLeave entire directory. After the initial deployment phase is complete, the target Windows operating system will end up rebooting itself at least once but usually more than once while it completes the setup and installation for the feature update. As the process runs it needs to have access to all of the files that BatchPatch will deploy. Having both of the aforementioned boxes checked will ensure that when the upgrade process runs on the target computer that it has all of the files it needs for the installation. After the feature update has completed 100% you may delete the files from the target computer(s). However, please make absolutely sure that the upgrade process is 100% completed before you delete any files. In your BatchPatch deployment configuration screen you will also need to add the following parameters:
    /auto upgrade /quiet

  8. Execute the feature upgrade deployment. In the deployment configuration that you created in the in the previous step you can execute the deployment immediately for the currently selected rows in the grid by just clicking on the ‘Execute now’ button. Alternatively you may save the deployment for future usage by clicking the double-right-arrow button ‘>>’. If you choose to save the deployment instead of executing it immediately, then when you are ready to deploy the feature update to your remote computers, you can begin the process by selecting those computers in the BatchPatch grid and then clicking on Actions > Deploy > Execute deployment, and then choose the deployment that you just created/saved.

    You should expect that the entire process will take a bit of time to complete. BatchPatch has to copy the whole installation directory to the target computer(s), which contains several gigabytes, before it can execute the upgrade process on the target(s). IMPORTANT: After the BatchPatch deployment completes for a given target computer BatchPatch will show Exit Code: 0 (SUCCESS). However, this just means that the BatchPatch deployment component is finished. The Windows feature update/upgrade process will take additional time. Please be patient and let the target computer continue upgrading and rebooting as many times as is needed. It might take a little while with multiple automatic reboots before everything is 100% finished.

    NOTE: We have had a couple of reports from users who received the following error:

    Deployment: Error: Access to the path '\\TargetComputer\C$\Program Files\BatchPatch\deployment\autorun.inf' is denied.

    We don’t know the exact cause of this issue, but it seems likely to somehow be related to the way that permissions were applied or inherited during the ISO extraction process. If you encounter this error it can be resolved quickly and easily by just deleting the autorun.inf file from the source directory after extracting the ISO contents but before executing the actual deployment for any target computers. This will prevent the problematic file from ever being copied to target computers. As such, the error will not occur.

Posted in Blog, General, Tutorials | Tagged , , | Comments closed

Deploying SQLServer2022-KB5063814-x64.exe with BatchPatch to Multiple Computers Simultaneously

Generally speaking, BatchPatch can deploy nearly all applications and third-party updates through the use of BatchPatch’s Deploy feature ( Actions > Deploy ). We have many examples / tutorials posted here: Software Deployment with BatchPatch. However, recently we came across a very rare example where the update in question simply wasn’t fully compatible with the built-in Deploy feature in BatchPatch.

The update file that gave us problems is SQLServer2022-KB5063814-x64.exe. Although the update would be successfully deployed/executed through the use of the BatchPatch Deploy feature, it would show indefinitely as “Executing” even after it had actually completed. Although this wasn’t the end of the world, it left something to be desired, and it required some manual intervention to both determine completion and manually kill residual processes that weren’t closing on their on.

In order to get around this unexpected behavior, we had to approach the deployment in a slightly different way. The steps are outlined below in case they could help someone else in the future.

  1. Put the SQLServer2022-KB5063814-x64.exe into C:\SomeFolder on the BatchPatch computer
  2. In BatchPatch click on Actions > Copy file/folder > Create/modify file or folder copy Create a file copy configuration just like the one in the screenshot below. Then save it by clicking the >> button. Then close the Create/modify file or folder copy window.
  3. In BatchPatch click on Actions > Execute remote process/command > Create/modify remote commands. Click Add Row and then create a command with the following title and command syntax:

    Title: SQL update execution
    Command:

    "C:\BatchPatch\deployment\temp\SQLServer2022-KB5063814-x64.exe" /q /IAcceptSQLServerLicenseTerms /Action=Patch /AllInstances

  4. Click Add Row a second time to create a second command with the following title and command syntax:

    Title: Delete SQL update file
    Command:

    cmd.exe /c del "C:\BatchPatch\deployment\temp\SQLServer2022-KB5063814-x64.exe" /F /Q

  5. In BatchPatch click on Actions > Job Queue > Create/modify job queue

    In the lower left corner of the Job Queue window you’ll find the three commands that you just created. Double click on them to add them to a new job queue in the following order (order shown below). Then save the job queue by using the >> button:

    -Copy SQL update
    -SQL update execution
    -Delete SQL update file

    See the screenshot below for exactly what it should look like:

  6. Finally you can execute the job queue on desired target computers. Select the desired target computers in the grid. Then click on Actions > Job Queue > Execute saved job queues > SQL Update

    The file is copied to the target computer. The update is applied successfully. Then the file is deleted successfully.

Posted in Blog, Tutorials | Tagged , | Comments closed

BatchPatch New Build Released August 2025

We published a new build recently.

–You can now generate consolidated reports of available updates from within the job queue and task scheduler

–You can now run Download offline updates repository from within the job queue and task scheduler

–You can now export a sanitized copy of the grid

–BatchPatch now includes a built-in workaround for the CopyToCache failure/error that users have been seeing in the latest versions of Windows 11. This workaround can be enabled under Tools > Settings > Windows Update > Automatically apply offline mode workaround for CopyToCache error (beta)

To view the rest of the changes/updates/fixes, please look in the software under Help > Check for updates > View change log

Posted in Blog, General | Tagged , , | Comments closed

Upgrading Multiple Computers from Windows 10 to Windows 11 using BatchPatch

You can use BatchPatch to upgrade your target computers from Windows 10 to Windows 11 by following the process outlined below. For this example I upgraded from a new Windows 10 22H2 installation to a Windows 11 24H2 installation, but the process should generally work for any release of Windows 10 to 11, and you can perform the deployment on numerous target machines simultaneously.

  1. Obtain the Windows 11 ISO installation media from Microsoft

    At the time of this writing, you can obtain the Windows 11 ISO from https://www.microsoft.com/en-us/software-download/windows11. In the past if you wanted an ISO file you would first have to download the Windows Media Creation Tool first (also available from the same link), and then you could run the media creation tool to obtain the ISO, but now they also have a direct link for the ISO file, which makes the process quicker and simpler.

  2. Extract the contents of the ISO file to a folder

    To perform the extraction you can either use a tool like 7-zip to directly extract the contents,


    or you can instead mount the ISO in Windows by browsing to the file, right-clicking on it, and then selecting the Mount option.

  3. Create the BatchPatch deployment

    by selecting the desired target computers in the grid, and then clicking on Actions > Deploy > Create/modify deployment….

    Click on the button to browse to the location of your setup.exe file, which will be inside of the folder where you extracted the Windows 11 ISO contents.

    Next, check the two boxes below that field to Copy entire directory and Leave entire directory.

    The Target working directory is where BatchPatch will copy the installation files to on the target computer. In this case since we have to use the setting to Leave entire directory, you could change this location if you want. The reason we have to leave the entire directory at the end of the deployment is because Windows will still need it to complete the setup process when the machine is rebooted. Once the target computer has rebooted and completed the Windows 11 setup process, you may delete the contents of the directory.

    Lastly, make sure your Parameters field is identical to mine. It should contain the following text:

    /auto upgrade /quiet /EULA accept

  4. Save and execute the deployment

    At this point you can save the deployment configuration with the double-right-arrow >> button. If you want to execute the deployment immediately on the selected target hosts in the grid, click Execute now in the deployment configuration window. Alternatively if you save the deployment for execution at a later time, you’ll be able to execute it directly from the Actions menu by selecting the desired target hosts in the grid and clicking on Actions > Deploy > Execute saved deployments

Posted in Blog, General, Tutorials | Tagged , , | Comments closed

Deploying Office 2024 to Numerous Computers with BatchPatch

Configuring and Executing an Office 2024 Deployment:

  1. Create a new folder that contains your setup.exe and configuration.xml files. The directory should contain no other files other than these two. For this example my folder is called E:\Temp\Office2024
  2. Go to Actions > Deploy > Create/modify deployment… Use the button to browse to the location of your setup.exe file. Then select the checkbox for Copy entire directory contents…. Next, input into the Parameters field: /configure configuration.xml. If your configuration.xml file has a different name, use the name for your own configuration.xml file. Otherwise your deployment configuration should look the same as mine does in the screenshot below.
  3. You’ll also need to go to Tools > Settings > Remote Execution, and then set your Remote Execution Context for Deployment to Elevated token + Interactive. Note, if for some reason you are using an older version of PsExec prior to v2.32, then de-select Interactive. However, you should generally be using a newer version of PsExec, and for any newer version you’ll need to select Interactive in addition to Elevated token, like in the screenshot below.

  4. You can save the deployment for later by clicking the double-right-arrow >> button in the Deployment configuration window. To execute a previously saved deployment, highlight the desired target hosts in the grid and click Actions > Deploy > Execute saved deployments > Office 2024 Deployment

  5. Alternatively you can execute the deployment directly from the Deployment configuration window. Just make sure to first highlight the desired target computers in the grid, then click on the Execute now button.
  6. When the deployment completes you’ll see Exit Code: 0 (SUCCESS) in the All Messages log column. However, you might also see an error right after that, like I did. In the screenshot below you can see that my deployment was successful, but then BatchPatch tried to delete the temp working directory on the target computer but couldn’t do it successfully. In this case the deployment was not affected, but I believe what happened was the OS had not yet let go of the lock on the temp directory, so BatchPatch couldn’t delete it even though BatchPatch was able to delete the setup.exe and configuration.xml files inside of it. I was able to manually remove it a moment later, but it really isn’t even necessary to do that because it’s an empty temp directory inside of the deployment remote working directory, so it’s harmless to leave, and in fact it will be deleted by BP the next time I run a deployment anyway.
Posted in Blog, General, Tutorials | Tagged , , , | Comments closed

Windows 11 Monthly Cumulative Update Fails to Install in Offline Mode: Copy To Cache: Failed. HRESULT: -2145095681 or HRESULT: -2146467818

We have received some reports that using BatchPatch offline mode to install the most recent monthly cumulative update for Windows 11 is now failing with the following errors appearing in the Remote Agent Log column in the grid (this log can also be accessed by using Actions > Windows updates > View BatchPatch.log or by opening the BatchPatch.log file directly on the target computer in the remote working directory, which is defined in BatchPatch Tools > Settings > Remote Execution > Remote working directory). The default location is C:\Program Files\BatchPatch\BatchPatch.log

The error that appears in the log is:
Copy To Cache: Failed. HRESULT: -2145095681
We have also observed this other error, though much less frequently:
Copy To Cache: Failed. HRESULT: -2146467818

We are experiencing the problem on our systems too. Microsoft has (once again) made changes to the way that Windows Update functions, which is now causing this feature in BatchPatch to not work.

The current release of BatchPatch (version 20250821) has an option under Tools > Settings > Windows Update > Automatically apply offline mode workaround for CopyToCache failure (beta) that you can use to automatically employ the workaround described below.

However, for those of you with older versions, I will illustrate below how to effectively work around this issue.


Identifying the Issue:

The relevant line in the Remote Agent Log for the target system is:

skipped> 2025-03 Cumulative Update for Windows 11 Version 24H2 for x64-based Systems (KB5053598) - Reason: Update not downloaded/cached

And here is a screenshot of the Remote Agent Log column in my BatchPatch instance where I’m seeing this error right now. Notice that in the section that starts with Begin copying files to Windows Update cache, the first update (2025-03 Cumulative Update for Windows 11 Version 24H2 for x64-based Systems (KB5053598)) contains 16 files. Each file’s line in the log shows Copy To Cache: Failed. HRESULT: -2145095681 at the end:



We can see that the KB5053598 2025-03 Cumulative Update was skipped (because it wasn’t able to be cached even though the update files were successfully downloaded). The other two updates (KB5049622, KB890830) still installed successfully. To install the skipped cumulative update, I’ll first examine the list of files that the update contains. If we look at the list of files that the 2025-03 cumulative update contains, we can see there are two files with .MSU extension.

5> windows11.0-kb5043080-x64_953449672073f8fb99badb4cc6d5d7849b9c83e8.msu :: Copy To Cache: Failed. HRESULT: -2145095681
13> windows11.0-kb5053598-x64_6cb3ffc5c4d652793dc71705248426eecdacdfd0.msu :: Copy To Cache: Failed. HRESULT: -2145095681

We can deploy these files directly to the target computer(s) using the BatchPatch Deploy feature. The 2025-03 Cumulative Update is KB5053598, so I’m actually going to start with the other KB5043080. In this case I’m pretty confident that KB5043080 isn’t applicable to the computer, but I want to see what happens when I try to install it. It’s probably there as a prerequisite for machines that do not already have the update installed. Even though I expect KB5043080 won’t install due to not being applicable, I want to be thorough and make sure that I attempt to install any .MSU file that is contained in KB5053598. It will not always be sufficient to *only* install the KB5043080 (or whichever KB ID matches the current month’s cumulative update KB ID). If the cumulative update contains other child .MSU files in addition to the primary .MSU for the KB ID of the parent update, we should generally always attempt to install those other child updates first in order to be sure that any prerequisites are met before we attempt to install the .MSU for the KB ID of the parent update, which in this case is KB5053598 — the March 2025 monthly cumulative update.


Workaround: Deploying the .MSU Update Files Directly with BatchPatch

The current release of BatchPatch (version 20250821) has an option under Tools > Settings > Windows Update > Automatically apply offline mode workaround for CopyToCache failure (beta) that you can use to automatically employ the workaround described below.

However, if you have an earlier version of BatchPatch, below I will illustrate below how to effectively work around this issue:

During the offline cached mode Windows Update process, the cumulative update is downloaded to the BatchPatch local cache directory as a bundle of files. When this issue first cropped up, one of the key changes that Microsoft made was to begin delivering the .MSU version of the update file included in the bundle of files for the cumulative update. So now if you experience the error and failure that is described by the title of this article/posting during the offline cached mode installation process, you can still get the update deployed with the BatchPatch Deploy method, by directly deploying the .MSU file(s) from the BatchPatch local cache directory to your target computers. This process is explained below.

  1. With the desired target host selected/highlighted in the grid, I click on Actions > Deploy > Create/modify deployment.
  2. Next I click on the file browser button to select the .MSU file deploy. I browse to the BatchPatch cache directory on my BatchPatch computer (this location is defined under Tools > Settings > Windows Update > Local update cache directory), and then I select the .MSU file that I want to deploy. The first file I want to deploy (or attempt to deploy) is the KB5043080 .MSU file.
  3. In this case I’m going to choose the option for a singular .MSU deployment:
  4. I browse to location of the desired .MSU file, and choose it.
  5. I chose to select the /norestart option so that the installer does not reboot the target computer when it finishes installing the update.
  6. Finally I’ll click Execute now to begin the deployment process. This will tell BatchPatch to copy the file to the target computer and then initiate its installation.
  7. As I suspected, this update is not applicable to the system. I know this because the deployment completed with the All Messages log column showing Exit Code: -2145124329, which means Update Not Applicable. In the next version of BatchPatch we’ll make sure that Update Not Applicable is included in the log right next to the exit code so that there is no confusion. However, in the current version of BatchPatch you’ll only see the HRESULT exit code value.
  8. Now I’ll follow the exact same process to deploy the .MSU for KB5053598.
  9. When this one finishes, I see Deployment: Exit Code: 3010 (SUCCESS – REBOOT_REQUIRED)
  10. I can now initiate the reboot in BatchPatch. If I had NOT selected the /noreboot switch in the deployment configuration, the target computer would have rebooted itself immediately after completing the update installation. However, I prefer to have BatchPatch initiate and monitor the reboot, rather than the target computer rebooting itself.
Posted in Blog, General, Tutorials | Tagged , , , , | Comments closed

WSUS is Now Deprecated

Microsoft announced at the end of last year that WSUS is now officially deprecated.

Microsoft said:

As part of our vision for simplified Windows management from the cloud, Microsoft has announced deprecation of Windows Server Update Services (WSUS). Specifically, this means that we are no longer investing in new capabilities, nor are we accepting new feature requests for WSUS. However, we are preserving current functionality and will continue to publish updates through the WSUS channel. We will also support any content already published through the WSUS channel.

What does this announcement mean for you?

Realistically, it probably doesn’t mean a whole lot, at least not any time in the near term or medium term. The reality is that Microsoft has barely touched WSUS in the past 15+ years, and they currently have no plans to remove it or stop publishing updates to the WSUS channel, so you can continue to use your WSUS for the foreseeable future.

As for BatchPatch, it continues to work with or without WSUS.

Posted in Blog, General | Tagged | Comments closed

Wait for a Remote Process to Finish Running Before Installing Updates

BatchPatch has a lot of built-in options to facilitate customizing your Windows Update process or your process for updating a third-party application. Today I want to illustrate one way to use BatchPatch to proceed with an update installation only after it confirms that a remote process is no longer running.

Maybe your environment has some requirements that prevent you from starting a patch installation or update process on target computers until after a certain process is no longer running on those target computers. Imagine you have someProcess.exe that you want to ensure is not still running at the time that you launch a remote Windows Update installation on various target computers. Here is one way to do it:

  1. In BatchPatch you’ll need to create a job queue. Select the desired rows/hosts in the grid, and then click Actions > Job Queue > Create/modify job queue
  2. In the Job Queue window I’ve created a queue which will test the target computer for a specific running process (someProcess.exe). If that process is found to be running, the Job Queue jumps to the label STILL RUNNING, which effectively makes a loop. It waits 5 minutes and then performs the same check. The process will loop indefinitely, checking for the existence of that running process every 5 minutes. If/when the process is found to no longer be running on the target computer, only then will the job queue advance to the next step, which in this case is to Download and install updates + reboot always.
  3. In the Job Queue above you can see the steps are as follows:
    step 1: Label:STILL RUNNING
    step 2: Wait 5 minutes
    step 3: If specified process (someProcess.exe) is running, goto label:STILL RUNNING
    step 4: Label:PROCESS NO LONGER RUNNING
    step 5: Download and install updates + reboot always
  4. At this point we can either click Execute now to start the job queue on all of the currently selected hosts/rows in the grid, or if we want to save the grid for later use (or to be run as a scheduled task), we can give the queue a title and then add it to our saved queues by clicking the double-right-arrow button in the Job Queue window.
Posted in Blog, General, Tutorials | Tagged , | Comments closed

BatchPatch New Build Released March 2025

We published a new build recently. The change log is visible in the software under Help > Check for updates > View change log

Posted in Blog, General | Tagged , | Comments closed

BatchPatch New Build Released February 2025

We published a new build recently. It contains a security update as well as grid performance improvements. The change log is visible in the software under Help > Check for updates > View change log

Posted in Blog, General | Tagged , , | Comments closed