+/**
+ * @ingroup G_modifying_wims
+ *
+ * Since wimlib v1.8.3: add, modify, or remove a per-image property from the
+ * WIM's XML document. This is an alternative to wimlib_set_image_name(),
+ * wimlib_set_image_descripton(), and wimlib_set_image_flags() which allows
+ * manipulating any simple string property.
+ *
+ * @param wim
+ * Pointer to the ::WIMStruct for the WIM.
+ * @param image
+ * The 1-based index of the image for which to set the property.
+ * @param property_name
+ * The name of the image property in the same format documented for
+ * wimlib_get_image_property().
+ * <br/>
+ * Note: if creating a new element using a bracketed index such as
+ * "WINDOWS/LANGUAGES/LANGUAGE[2]", the highest index that can be specified
+ * is one greater than the number of existing elements with that same name,
+ * excluding the index. That means that if you are adding a list of new
+ * elements, they must be added sequentially from the first index (1) to
+ * the last index (n).
+ * @param property_value
+ * If not NULL and not empty, the property is set to this value.
+ * Otherwise, the property is removed from the XML document.
+ *
+ * @return 0 on success; a ::wimlib_error_code value on failure.
+ *
+ * @retval ::WIMLIB_ERR_INVALID_IMAGE
+ * @p image does not exist in @p wim.
+ * @retval ::WIMLIB_ERR_INVALID_PARAM
+ * @p property_name has an unsupported format, or @p property_name included
+ * a bracketed index that was too high.
+ */
+extern int
+wimlib_set_image_property(WIMStruct *wim, int image,
+ const wimlib_tchar *property_name,
+ const wimlib_tchar *property_value);
+