I stumbled upon this post while trying to fix this exact issue. It seems only to affect components since the config info is in a separate config.xml file that is never loaded during install. I have started to look at tweaking the installer.php getParams method to look for that file too, but have not gotten it to work yet.
In the time being, I could not find a "setParams" function that you could run automatically from that class, so instead of writing one, I opted to try the following method which loads the config.xml file into a JForm (probably should just load the XML, but I had this code sitting around so I ran with it for the moment).
if($type == "install"){
if(method_exists($parent, 'extension_root')) {
$configfile = $parent->getPath('extension_root').'/config.xml';
} else {
$configfile = $parent->getParent()->getPath('extension_root').'/config.xml';
}
if (file_exists($configfile)) {
$xml = file_get_contents($configfile);
$form = JForm::getInstance('installer', $xml, array(), false, '/config');
$params = array();
if ($form->getFieldset('component')) {
foreach ($form->getFieldset('component') as $field) {
$params[$field->__get('name')] = $field->__get('value');
}
}
$db = JFactory::getDBO();
$query = "UPDATE #__extensions SET params='".json_encode($params)."' WHERE element='".$parent->get('element')."'";
$db->setQuery($query)->query();
}
}
This would go in the postflight function as outlined in the above post.