Unregister engine on uninstall (#7594)

Signed-off-by: Alex Peterson <26804013+AMZN-alexpete@users.noreply.github.com>
monroegm-disable-blank-issue-2
Alex Peterson 4 years ago committed by GitHub
parent 5dd88ba05c
commit c2c8fb5b9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -36,6 +36,7 @@
<Directory Id="root.cmake.runtime" Name="runtime"/>
</Directory>
<Directory Id="root.python" Name="python"/>
<Directory Id="root.scripts" Name="scripts"/>
<Directory Id="root.tools" Name="Tools">
<Directory Id="root.tools.redist" Name="Redistributables">
<Directory Id="root.tools.redist.cmake" Name="CMake"/>
@ -61,5 +62,12 @@
Execute="deferred"
Impersonate="no"/>
<CustomAction Id="UnRegisterEngine"
ExeCommand="&quot;[SystemFolder]cmd.exe&quot; /C @&quot;[root.scripts]o3de.bat&quot; register --remove --this-engine"
Directory="INSTALL_ROOT"
Execute="immediate"
Return="ignore"
Impersonate="no"/>
</Fragment>
</Wix>

@ -58,6 +58,10 @@
<Custom Action="ConfigurePython" After="MoveCMake">
NOT Installed Or REINSTALL
</Custom>
<!-- limit the unregister action to full uninstall -->
<Custom Action="UnRegisterEngine" After="InstallInitialize">
(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")
</Custom>
</InstallExecuteSequence>
<UIRef Id="$(var.CPACK_WIX_UI_REF)" />

@ -225,7 +225,7 @@ def remove_engine_name_to_path(json_data: dict,
returns 0 to indicate no issues has occurred with removal
"""
if engine_path.is_dir() and validation.valid_o3de_engine_json(engine_path):
if engine_path.is_dir() and validation.valid_o3de_engine_json(pathlib.Path(engine_path).resolve() / 'engine.json'):
engine_json_data = manifest.get_engine_json_data(engine_path=engine_path)
if 'engine_name' in engine_json_data and 'engines_path' in json_data:
engine_name = engine_json_data['engine_name']
@ -234,6 +234,9 @@ def remove_engine_name_to_path(json_data: dict,
except KeyError:
# Attempting to remove a non-existent engine_name is fine
pass
else:
logger.warning(f'Unable to find engine.json file or file is invalid at path {engine_path.as_posix()}')
return 0
@ -354,8 +357,8 @@ def register_engine_path(json_data: dict,
if remove:
return remove_engine_name_to_path(json_data, engine_path)
return add_engine_name_to_path(json_data, engine_path, force)
else:
return add_engine_name_to_path(json_data, engine_path, force)
def register_external_subdirectory(json_data: dict,
@ -797,7 +800,7 @@ def _run_register(args: argparse) -> int:
remove_invalid_o3de_objects()
return repo.refresh_repos()
elif args.this_engine:
ret_val = register(engine_path=manifest.get_this_engine_path(), force=args.force)
ret_val = register(engine_path=manifest.get_this_engine_path(), force=args.force, remove=args.remove)
return ret_val
elif args.all_engines_path:
return register_all_engines_in_folder(args.all_engines_path, args.remove, args.force)

Loading…
Cancel
Save