Fix that the package system attribute is changed
when recovery is performed becuase the installer is terminated during
the update of the ReadonlyUpdateInstalled package
Change-Id: I23d2afb9a73864f0da286bdb430cd792f583b833
Signed-off-by: Ilho Kim <ilho159.kim@samsung.com>
PkgQueryInterface pkg_query(context_->pkgid.get(), context_->uid.get());
if (pkg_query.IsPreloadPackage())
SetExtAttrForPreloadPackage(pkg_query.IsUpdatedPackage(),
PkgQueryInterface pkg_query(context_->pkgid.get(), context_->uid.get());
if (pkg_query.IsPreloadPackage())
SetExtAttrForPreloadPackage(pkg_query.IsUpdatedPackage(),
- pkg_query.IsRemovablePackage());
+ pkg_query.IsRemovablePackage(), pkg_query.IsSystemPackage());
UnregisterApplication();
if (!RegisterApplication()) {
LOG(ERROR) << "Unsuccessful app registration";
UnregisterApplication();
if (!RegisterApplication()) {
LOG(ERROR) << "Unsuccessful app registration";
LOG(ERROR) << "Some parameters are lacking";
return Status::ERROR;
}
LOG(ERROR) << "Some parameters are lacking";
return Status::ERROR;
}
- SetExtAttrForPreloadPackage(false, false);
+ SetExtAttrForPreloadPackage(false, false, true);
UnregisterApplication();
if (!RegisterApplication()) {
LOG(ERROR) << "Unsuccessful app registration";
UnregisterApplication();
if (!RegisterApplication()) {
LOG(ERROR) << "Unsuccessful app registration";
}
void StepRecoverApplication::SetExtAttrForPreloadPackage(
}
void StepRecoverApplication::SetExtAttrForPreloadPackage(
- bool is_updated, bool is_removable) {
+ bool is_updated, bool is_removable, bool is_system) {
manifest_x* manifest_data = context_->manifest_data.get();
free(manifest_data->preload);
manifest_data->preload = strdup("true");
free(manifest_data->update);
manifest_data->update = strdup(is_updated ? "true" : "false");
free(manifest_data->system);
manifest_x* manifest_data = context_->manifest_data.get();
free(manifest_data->preload);
manifest_data->preload = strdup("true");
free(manifest_data->update);
manifest_data->update = strdup(is_updated ? "true" : "false");
free(manifest_data->system);
- manifest_data->system = strdup(is_removable ? "false" : "true");
+ manifest_data->system = strdup(is_system ? "true" : "false");
free(manifest_data->readonly);
manifest_data->readonly = strdup(is_removable ? "false" : "true");
free(manifest_data->removable);
free(manifest_data->readonly);
manifest_data->readonly = strdup(is_removable ? "false" : "true");
free(manifest_data->removable);
private:
bool SetXmlPaths();
private:
bool SetXmlPaths();
- void SetExtAttrForPreloadPackage(bool is_updated, bool is_removable);
+ void SetExtAttrForPreloadPackage(bool is_updated, bool is_removable,
+ bool is_system);
bool UnregisterApplication();
bool RegisterApplication();
bool UnregisterApplication();
bool RegisterApplication();