[BUG]: Update server not written to installation xml manifest #1289

Closed
opened 2026-03-04 03:16:51 +00:00 by ConfidantCommunications · 5 comments

What Happened?

After configuration there is no <updateservers> node in my xml manifest and the update server string is not found anywhere in the code.

Steps to reproduce the Bug

Under Dynamic Integration I checked "Add Update Server" and I entered a valid path to my xml source. I set the Update Server Target to "Zip" and then save and compile.

Which Joomla version are you compiling in?

6.0.3

Which PHP version are you compiling in?

8.3.27

Which Joomla versions are you targeting?

6.0.0

Which PHP version are you targeting?

8.3.27

Which Web server is JCB running on?

Joomla Docker image "joomla:5.4.0-php8.3". Apache 2

Which Relational Database is JCB running on?

mysqlnd 8.3.27

Which OS is JCB running on?

Alpine linux

Which JCB version are you using?

6.1.4

Where in JCB did this issue occur?

Compilation of a component

On which browsers did you encounter the issue?

Firefox, Chrome

Additional Comments

No response

### What Happened? After configuration there is no `<updateservers>` node in my xml manifest and the update server string is not found anywhere in the code. ### Steps to reproduce the Bug Under Dynamic Integration I checked "Add Update Server" and I entered a valid path to my xml source. I set the Update Server Target to "Zip" and then save and compile. ### Which Joomla version are you compiling in? 6.0.3 ### Which PHP version are you compiling in? 8.3.27 ### Which Joomla versions are you targeting? 6.0.0 ### Which PHP version are you targeting? 8.3.27 ### Which Web server is JCB running on? Joomla Docker image "joomla:5.4.0-php8.3". Apache 2 ### Which Relational Database is JCB running on? mysqlnd 8.3.27 ### Which OS is JCB running on? Alpine linux ### Which JCB version are you using? 6.1.4 ### Where in JCB did this issue occur? Compilation of a component ### On which browsers did you encounter the issue? Firefox, Chrome ### Additional Comments _No response_
ConfidantCommunications added the Bug label 2026-03-04 03:16:51 +00:00
Owner

So I tested this in a Joomla 6.0.3 system running JCB v6.1.5-beta1 and so here it is:

The Update server configuration in the Component
image.png
https://raw.githubusercontent.com/JCBDemo/Joomla-Demo-Component/master/demo_updateserver.xml

And my demo.xml file looks like this:

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="6.0" method="upgrade">
	<name>COM_DEMO</name>
	<creationDate>10th March, 2026</creationDate>
	<author>Llewellyn van der Merwe</author>
	<authorEmail>joomla@vdm.io</authorEmail>
	<authorUrl>https://www.vdm.io/</authorUrl>
	<copyright>Copyright (C) 2015. All Rights Reserved</copyright>
	<license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license>
	<version>6.0.1</version>
	<description><![CDATA[
		<h1>Demo (v.6.0.1)</h1>
		<div style="clear: both;"></div>
		<p>This is just a simple demonstration showcasing the most basic functionality of the [Joomla!](http://www.joomla.org) Component Builder (JCB). While this example covers the fundamentals, JCB offers a wide range of powerful features and customization options for building advanced Joomla! extensions with ease.</p>
		<p>Created by <a href="https://www.vdm.io/" target="_blank">Llewellyn van der Merwe</a><br /><small>Development started 16th October, 2025</small></p>
	]]></description>
	<namespace path="src">Demo\Component\Demo</namespace>

	<!-- Runs on install -->
	<install>
		<sql>
			<file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
		</sql>
	</install>

	<!-- Runs on uninstall -->
	<uninstall>
		<sql>
			<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
		</sql>
	</uninstall>

	<!-- Runs on install/uninstall/update -->
	<scriptfile>DemoInstallerScript.php</scriptfile>

	<media destination="com_demo" folder="media">
		<filename>index.html</filename>
		<folder>js</folder>
		<folder>css</folder>
		<folder>images</folder>
		<folder>datatable</folder>
		<folder>uikit-v3</folder>
	</media>

	<!-- Update Schema -->
	<update>
		<schemas>
			<schemapath type="mysql">sql/updates/mysql/</schemapath>
		</schemas>
	</update>

	<files folder="site">
		<filename>index.html</filename>
		<folder>assets</folder>
		<folder>forms</folder>
		<folder>layouts</folder>
		<folder>src</folder>
		<folder>tmpl</folder>
	</files>

	<languages folder="site">
		<language tag="en-GB">language/en-GB/en-GB.com_demo.ini</language>
		<language tag="en-GB">language/en-GB/en-GB.com_demo.sys.ini</language>
	</languages>

	<administration>
		<menu>COM_DEMO_MENU</menu>
		<submenu>
			<!-- Instead of link you can specify individual link attributes -->
			<menu option="com_demo" view="demo">COM_DEMO_MENU_DASHBOARD</menu>
			<menu option="com_demo" view="looks">COM_DEMO_MENU_LOOKS</menu>
			<menu option="com_demo" view="importer">COM_DEMO_MENU_IMPORTER</menu>
			<menu option="com_demo" view="details">COM_DEMO_MENU_DETAILS</menu>
			<menu option="com_demo" view="addresses">COM_DEMO_MENU_ADDRESSES</menu>
			<menu option="com_demo" view="regions">COM_DEMO_MENU_REGIONS</menu>
			<menu option="com_demo" view="subregions">COM_DEMO_MENU_SUBREGIONS</menu>
			<menu option="com_demo" view="countries">COM_DEMO_MENU_COUNTRIES</menu>
			<menu option="com_demo" view="states">COM_DEMO_MENU_STATES</menu>
			<menu option="com_demo" view="cities">COM_DEMO_MENU_CITIES</menu>
			<menu option="com_demo" view="files">COM_DEMO_MENU_FILES</menu>
			<menu option="com_demo" view="timezones">COM_DEMO_MENU_TIMEZONES</menu>
			<menu option="com_demo" view="address_types">COM_DEMO_MENU_ADDRESS_TYPES</menu>
			<menu option="com_demo" view="file_types">COM_DEMO_MENU_FILE_TYPES</menu>
			<menu option="com_demo" view="user_entity_maps">COM_DEMO_MENU_USER_ENTITY_MAPS</menu>
			<menu option="com_demo" view="items_import_queue">COM_DEMO_MENU_ITEMS_IMPORT_QUEUE</menu>
		</submenu>
		<files folder="admin">
			<filename>access.xml</filename>
			<filename>config.xml</filename>
			<filename>index.html</filename>
			<filename>README.txt</filename>
			<folder>assets</folder>
			<folder>forms</folder>
			<folder>layouts</folder>
			<folder>presets</folder>
			<folder>services</folder>
			<folder>sql</folder>
			<folder>src</folder>
			<folder>tmpl</folder>
		</files>

		<languages folder="admin">
			<language tag="en-GB">language/en-GB/en-GB.com_demo.ini</language>
			<language tag="en-GB">language/en-GB/en-GB.com_demo.sys.ini</language>
		</languages>

	</administration>
	<updateservers>
		<server type="extension" enabled="1" element="com_demo" name="Demo">https://raw.githubusercontent.com/JCBDemo/Joomla-Demo-Component/master/demo_updateserver.xml</server>
	</updateservers>
</extension>

Take note of:

<updateservers>
		<server type="extension" enabled="1" element="com_demo" name="Demo">https://raw.githubusercontent.com/JCBDemo/Joomla-Demo-Component/master/demo_updateserver.xml</server>
</updateservers>

In-fact, if you check in the JCB package in the pkg_component_builder.xml you'll see the exact same setup:

<updateservers>
	<server type="extension" name="Component Builder Package - Updates" element="pkg_component_builder">https://raw.githubusercontent.com/joomengine/Joomla-Component-Builder/refs/heads/6.x/componentbuilder_update_server.xml</server>
</updateservers>

And in the JCB component the update server is setup exactly the same way as shown in the screenshot.

Please let us know if this helps clarify your issue. If you're still not getting it to work please share additional details like screenshots and code snippets for us to help debug this properly.

So I tested this in a Joomla 6.0.3 system running JCB v6.1.5-beta1 and so here it is: The Update server configuration in the Component ![image.png](https://git.vdm.dev/attachments/6ef578bd-3603-45c8-9e0d-3339217d01a3) `https://raw.githubusercontent.com/JCBDemo/Joomla-Demo-Component/master/demo_updateserver.xml` And my `demo.xml` file looks like this: ```xml <?xml version="1.0" encoding="utf-8"?> <extension type="component" version="6.0" method="upgrade"> <name>COM_DEMO</name> <creationDate>10th March, 2026</creationDate> <author>Llewellyn van der Merwe</author> <authorEmail>joomla@vdm.io</authorEmail> <authorUrl>https://www.vdm.io/</authorUrl> <copyright>Copyright (C) 2015. All Rights Reserved</copyright> <license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license> <version>6.0.1</version> <description><![CDATA[ <h1>Demo (v.6.0.1)</h1> <div style="clear: both;"></div> <p>This is just a simple demonstration showcasing the most basic functionality of the [Joomla!](http://www.joomla.org) Component Builder (JCB). While this example covers the fundamentals, JCB offers a wide range of powerful features and customization options for building advanced Joomla! extensions with ease.</p> <p>Created by <a href="https://www.vdm.io/" target="_blank">Llewellyn van der Merwe</a><br /><small>Development started 16th October, 2025</small></p> ]]></description> <namespace path="src">Demo\Component\Demo</namespace> <!-- Runs on install --> <install> <sql> <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file> </sql> </install> <!-- Runs on uninstall --> <uninstall> <sql> <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file> </sql> </uninstall> <!-- Runs on install/uninstall/update --> <scriptfile>DemoInstallerScript.php</scriptfile> <media destination="com_demo" folder="media"> <filename>index.html</filename> <folder>js</folder> <folder>css</folder> <folder>images</folder> <folder>datatable</folder> <folder>uikit-v3</folder> </media> <!-- Update Schema --> <update> <schemas> <schemapath type="mysql">sql/updates/mysql/</schemapath> </schemas> </update> <files folder="site"> <filename>index.html</filename> <folder>assets</folder> <folder>forms</folder> <folder>layouts</folder> <folder>src</folder> <folder>tmpl</folder> </files> <languages folder="site"> <language tag="en-GB">language/en-GB/en-GB.com_demo.ini</language> <language tag="en-GB">language/en-GB/en-GB.com_demo.sys.ini</language> </languages> <administration> <menu>COM_DEMO_MENU</menu> <submenu> <!-- Instead of link you can specify individual link attributes --> <menu option="com_demo" view="demo">COM_DEMO_MENU_DASHBOARD</menu> <menu option="com_demo" view="looks">COM_DEMO_MENU_LOOKS</menu> <menu option="com_demo" view="importer">COM_DEMO_MENU_IMPORTER</menu> <menu option="com_demo" view="details">COM_DEMO_MENU_DETAILS</menu> <menu option="com_demo" view="addresses">COM_DEMO_MENU_ADDRESSES</menu> <menu option="com_demo" view="regions">COM_DEMO_MENU_REGIONS</menu> <menu option="com_demo" view="subregions">COM_DEMO_MENU_SUBREGIONS</menu> <menu option="com_demo" view="countries">COM_DEMO_MENU_COUNTRIES</menu> <menu option="com_demo" view="states">COM_DEMO_MENU_STATES</menu> <menu option="com_demo" view="cities">COM_DEMO_MENU_CITIES</menu> <menu option="com_demo" view="files">COM_DEMO_MENU_FILES</menu> <menu option="com_demo" view="timezones">COM_DEMO_MENU_TIMEZONES</menu> <menu option="com_demo" view="address_types">COM_DEMO_MENU_ADDRESS_TYPES</menu> <menu option="com_demo" view="file_types">COM_DEMO_MENU_FILE_TYPES</menu> <menu option="com_demo" view="user_entity_maps">COM_DEMO_MENU_USER_ENTITY_MAPS</menu> <menu option="com_demo" view="items_import_queue">COM_DEMO_MENU_ITEMS_IMPORT_QUEUE</menu> </submenu> <files folder="admin"> <filename>access.xml</filename> <filename>config.xml</filename> <filename>index.html</filename> <filename>README.txt</filename> <folder>assets</folder> <folder>forms</folder> <folder>layouts</folder> <folder>presets</folder> <folder>services</folder> <folder>sql</folder> <folder>src</folder> <folder>tmpl</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB/en-GB.com_demo.ini</language> <language tag="en-GB">language/en-GB/en-GB.com_demo.sys.ini</language> </languages> </administration> <updateservers> <server type="extension" enabled="1" element="com_demo" name="Demo">https://raw.githubusercontent.com/JCBDemo/Joomla-Demo-Component/master/demo_updateserver.xml</server> </updateservers> </extension> ``` Take note of: ``` <updateservers> <server type="extension" enabled="1" element="com_demo" name="Demo">https://raw.githubusercontent.com/JCBDemo/Joomla-Demo-Component/master/demo_updateserver.xml</server> </updateservers> ``` In-fact, if you check in the JCB package in the `pkg_component_builder.xml` you'll see the exact same setup: ``` <updateservers> <server type="extension" name="Component Builder Package - Updates" element="pkg_component_builder">https://raw.githubusercontent.com/joomengine/Joomla-Component-Builder/refs/heads/6.x/componentbuilder_update_server.xml</server> </updateservers> ``` And in the JCB component the update server is setup exactly the same way as shown in the screenshot. Please let us know if this helps clarify your issue. If you're still not getting it to work please share additional details like screenshots and code snippets for us to help debug this properly.
Author

Here is my configuration:
image.png

From there I compile for Joomla 6.
The resulting xml install file is attached in the zip file.

Here is my configuration: <img width="801" alt="image.png" src="attachments/5c273fb8-f93a-42ed-9439-f950a604ddaa"> From there I compile for Joomla 6. The resulting xml install file is attached in the zip file.
Author

Perhaps this is more helpful for viewing:

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="6.0" method="upgrade">
	<name>COM_THREEDBUG</name>
	<creationDate>10th March, 2026</creationDate>
	<author>Allan Dowdeswell</author>
	<authorEmail>support@3dbug.net</authorEmail>
	<authorUrl>https://3dbug.net/</authorUrl>
	<copyright>Copyright (C) 2026. Confidant Communications. All Rights Reserved</copyright>
	<license>GNU General Public License version 2 or later; see description.txt</license>
	<version>1.1.0beta</version>
	<description><![CDATA[
		<h1>3DBug (v.1.1.0beta)</h1>
		<div style="clear: both;"></div>
		<p>3DBug Studio lets you display your Joomla content in 2D or 3D, using the graphics you prefer. You can now make a graphical site map of your website, make your own navigation map, property tour, or museum tour. What will you build today?</p>
		<p>Created by <a href="https://3dbug.net/" target="_blank">Allan Dowdeswell</a><br /><small>Development started 22nd February, 2025</small></p>
	]]></description>
	<namespace path="src">Confidant\Component\Threedbug</namespace>

	<!-- Runs on install -->
	<install>
		<sql>
			<file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
		</sql>
	</install>

	<!-- Runs on uninstall -->
	<uninstall>
		<sql>
			<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
		</sql>
	</uninstall>

	<!-- Runs on install/uninstall/update -->
	<scriptfile>ThreedbugInstallerScript.php</scriptfile>

	<media destination="com_threedbug" folder="media">
		<filename>index.html</filename>
		<folder>js</folder>
		<folder>css</folder>
		<folder>images</folder>
		<folder>3dbugeditor</folder>
		<folder>3dbugadmin</folder>
	</media>

	<!-- Update Schema -->
	<update>
		<schemas>
			<schemapath type="mysql">sql/updates/mysql/</schemapath>
		</schemas>
	</update>

	<files folder="site">
		<filename>index.html</filename>
		<folder>assets</folder>
		<folder>forms</folder>
		<folder>layouts</folder>
		<folder>src</folder>
		<folder>tmpl</folder>
	</files>

	<languages folder="site">
		<language tag="en-GB">language/en-GB/en-GB.com_threedbug.ini</language>
		<language tag="en-GB">language/en-GB/en-GB.com_threedbug.sys.ini</language>
	</languages>

	<administration>
		<menu>COM_THREEDBUG_MENU</menu>
		<submenu>
			<!-- Instead of link you can specify individual link attributes -->
			<menu option="com_threedbug" view="threedbugdashboard">COM_THREEDBUG_MENU_THREEDBUGDASHBOARD</menu>
			<menu option="com_threedbug" view="worlds">COM_THREEDBUG_MENU_WORLDS</menu>
		</submenu>
		<files folder="admin">
			<filename>access.xml</filename>
			<filename>config.xml</filename>
			<filename>index.html</filename>
			<folder>assets</folder>
			<folder>forms</folder>
			<folder>layouts</folder>
			<folder>presets</folder>
			<folder>services</folder>
			<folder>sql</folder>
			<folder>src</folder>
			<folder>tmpl</folder>
		</files>

		<languages folder="admin">
			<language tag="en-GB">language/en-GB/en-GB.com_threedbug.ini</language>
			<language tag="en-GB">language/en-GB/en-GB.com_threedbug.sys.ini</language>
		</languages>

	</administration>
</extension>
Perhaps this is more helpful for viewing: ``` <?xml version="1.0" encoding="utf-8"?> <extension type="component" version="6.0" method="upgrade"> <name>COM_THREEDBUG</name> <creationDate>10th March, 2026</creationDate> <author>Allan Dowdeswell</author> <authorEmail>support@3dbug.net</authorEmail> <authorUrl>https://3dbug.net/</authorUrl> <copyright>Copyright (C) 2026. Confidant Communications. All Rights Reserved</copyright> <license>GNU General Public License version 2 or later; see description.txt</license> <version>1.1.0beta</version> <description><![CDATA[ <h1>3DBug (v.1.1.0beta)</h1> <div style="clear: both;"></div> <p>3DBug Studio lets you display your Joomla content in 2D or 3D, using the graphics you prefer. You can now make a graphical site map of your website, make your own navigation map, property tour, or museum tour. What will you build today?</p> <p>Created by <a href="https://3dbug.net/" target="_blank">Allan Dowdeswell</a><br /><small>Development started 22nd February, 2025</small></p> ]]></description> <namespace path="src">Confidant\Component\Threedbug</namespace> <!-- Runs on install --> <install> <sql> <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file> </sql> </install> <!-- Runs on uninstall --> <uninstall> <sql> <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file> </sql> </uninstall> <!-- Runs on install/uninstall/update --> <scriptfile>ThreedbugInstallerScript.php</scriptfile> <media destination="com_threedbug" folder="media"> <filename>index.html</filename> <folder>js</folder> <folder>css</folder> <folder>images</folder> <folder>3dbugeditor</folder> <folder>3dbugadmin</folder> </media> <!-- Update Schema --> <update> <schemas> <schemapath type="mysql">sql/updates/mysql/</schemapath> </schemas> </update> <files folder="site"> <filename>index.html</filename> <folder>assets</folder> <folder>forms</folder> <folder>layouts</folder> <folder>src</folder> <folder>tmpl</folder> </files> <languages folder="site"> <language tag="en-GB">language/en-GB/en-GB.com_threedbug.ini</language> <language tag="en-GB">language/en-GB/en-GB.com_threedbug.sys.ini</language> </languages> <administration> <menu>COM_THREEDBUG_MENU</menu> <submenu> <!-- Instead of link you can specify individual link attributes --> <menu option="com_threedbug" view="threedbugdashboard">COM_THREEDBUG_MENU_THREEDBUGDASHBOARD</menu> <menu option="com_threedbug" view="worlds">COM_THREEDBUG_MENU_WORLDS</menu> </submenu> <files folder="admin"> <filename>access.xml</filename> <filename>config.xml</filename> <filename>index.html</filename> <folder>assets</folder> <folder>forms</folder> <folder>layouts</folder> <folder>presets</folder> <folder>services</folder> <folder>sql</folder> <folder>src</folder> <folder>tmpl</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB/en-GB.com_threedbug.ini</language> <language tag="en-GB">language/en-GB/en-GB.com_threedbug.sys.ini</language> </languages> </administration> </extension> ```
Owner

JCB needs to use the url to produce a file name, and since your url does not end with filename.xml jcb is not able to detect the file name and therefore did not add the url.

This is the moment JCB does the work: 79f9a42a5c/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Component/Data.php (L1243)

As you can see in the code, you can also add a query parameter with the file name.

When no file name could be found: 79f9a42a5c/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Component/Data.php (L1172)

The update server is not added.

JCB needs to use the url to produce a file name, and since your url does not end with `filename.xml` jcb is not able to detect the file name and therefore did not add the url. This is the moment JCB does the work: https://git.vdm.dev/joomla/Component-Builder/src/commit/79f9a42a5c5058bdd56c2a3b184a397334c78500/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Component/Data.php#L1243 As you can see in the code, you can also add a query parameter with the file name. When no file name could be found: https://git.vdm.dev/joomla/Component-Builder/src/commit/79f9a42a5c5058bdd56c2a3b184a397334c78500/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Component/Data.php#L1172 The update server is not added.
Author

Thanks for the info. I made a 301 redirect on my server which points to the proper place, so I could make a sane-looking URL for the updateserver info.

Thanks for the info. I made a 301 redirect on my server which points to the proper place, so I could make a sane-looking URL for the updateserver info.
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: joomla/Component-Builder#1289