一键安装指令大全

概述

提供关于一键安装涉及到的所有配置和指令的说明。

配置文件类型

一键安装的配置涉及三个文档:
xxxSetupConfig.json:用于配置一键安装需要执行的指令,xxx一般为项目代码或名称。

SetupConfig.json文件分为5个部分:

  • 变量(下图红色部分):变量的值可以通过ui界面中的选择来修改
  • AdminCmds(下图黄色部分):一般在这里配置一键安装中需要管理员权限的指令
  • UserCmds(下图绿色部分):一般在这里配置一键安装中不需要管理员权限的指令
  • CustomCmds(下图紫色部分):一般在这里配置不在一键安装入口执行的指令,比如Pangu窗口右上角的ArtUpdate按钮被点击后执行的指令
  • UserOverridableList(下图白色部分):当变量的名字出现在此部分时,用户在界面上的选择会被保存下来,在您下一次打开一键安装界面时将会保留上一次一键安装的选择 avatar
(一键安装的配置文件)

xxxSetupUI.json:用于配置一键安装界面的UI控件,xxx一般为项目代码或名称,一般与xxxSetupConfig.json中的xxx保持一致。如果项目无修改UI控件的需求,可不配置该文件,此时会使用默认的SetupUI。

我们在二进制包体中提供了KaiTianSetupConfig.json和KaiTianSetupUI.json文件,这两份配置文件中几乎包含了最全的一键安装配置,您可以将这两份文件复制为副本,作为项目的一键安装配置文件的参考,然后按需修改内容即可。

ini配置文件:如果项目需要自己组装文件夹结构,比如从A地址拉取文件然后链接到B地址,那么可以在项目文件夹下新增ini配置文件实现。我们在KaiTian项目的文件夹下准备好了KaiTian需要的各种组装文件夹组装的ini配置文件,您可以将该文件复制为一份副本,作为项目组装的ini配置文件的参考,然后按需修改其中的模块。一般项目需要组装的文件夹复杂度远远小于KaiTian,只需要删除大部分其中的条目,以及替换仓库地址即可。

xxxSetupConfig.json详细介绍

特殊变量说明

这些变量在代码中有其他用途,或者会被系统运行自动写入,请不要用他们来存项目自定义的值。

  • Job: 用来匹配CodeUnifier中的配置
  • Project:用来区分项目的名称
  • SourceControlSoftware:SVN或者perforce,决定项目用什么来拉取资源文件
  • CurUnrealEngineMajorVersion:当前ue的大版本号,如ue5值为5,ue4值为4
  • CurUnrealEngineMinorVersion:当前ue的小版本好,如ue5.3为3,ue4.27为27
  • CurProjectContentPath:当前ue项目运行时的Content目录(用来建立资源路径关系)
  • CurProjectConfigPath:当前ue项目运行时的Config目录(用来建立某些pangu版本可能需要的PanguConfig Meta路径)
  • CurProjectPath:当前项目运行的根目录

允许变量替换

一键安装的变量特殊处理的一点是,允许变量替换,如果变量的值是一个字符串且被大括号{ }包围,则认为要被会取大括号内的字符串为变量名的变量的值与其他字符串拼接。 avatar

(配置需要用户变量代入的指令)
上图中的指令,在用户界面选为main_dever时实际执行时会变成:

avatar

指令的组成

一键安装中使用的指令如下图所示,可由指令名(图中红色)、执行条件(图中蓝色)、执行参数(图中绿色)三个部分组成。 avatar

指令名与python中被setup_command装饰的函数的name一致,指令参数与python中被setup_command装饰的函数的参数一致。

@setup_command('change_ue_settings')
def change_ue_settings(uclass_name, setting_name, setting_value):
	...

指令在python源码中可以由Pangu方的项目接口人添加。

上图中的change_ue_settings指令,实际就会执行这个change_ue_settings()函数。指令参数的数量需要与函数变量数量对上。

指令的包装器有两个参数,第一个参数是指令名称,第二个可省参数是这条指令是否需要阻塞执行,如果不需要阻塞执行则会另开线程执行。一般情况下,需要管理员权限的指令和影响后续指令执行的指令需要blocking。

执行条件由--condition字符串开始,后面最接近的一个字符串为这条语句的执行条件,条件中也支持变量替换。不符合执行条件的指令在运行时就被过滤掉了。

json中引号用\"表示。当条件为真的时候这条语句才会实际执行。

AdminCmds 需要管理员权限的指令

管理员权限通过windows的CMD命令行获取,所以这个部分的指令最终会生成一个PcgInstallAdmin.bat文件来执行,所以这个部分的指令都是按配置顺序生成。 当前版本的指令可以参考各个项目中的SetupConfig.json中的使用情况。

不同的语句有不同的作用,以kaitian为例进行说明,选取项目常用语句进行说明,具体各个项目的配置请自行取舍修改。

指令简单说明
get_mount_cloud_disk_cmd挂载云盘(W盘)
crack_houdini绿色使用Houidini
install_gaea静默安装gaea并且修改用户的注册表信息
set_env设置环境变量
set_houdini_file_association设置使用houdini来默认打开某个后缀的文件

UserCmds 不需要管理员权限的指令

这部分指令无需管理员权限,可以在后台执行,也是按顺序执行。 以kaitian为例进行说明,选取项目常用语句进行说明,具体各个项目的配置请自行取舍修改。

这个部分的指令迭代较快,当前版本的指令可以参考各个项目中的SetupConfig.json中的使用情况。

指令简单说明
copyfile拷贝文件(夹)
svn_check_login检查svn仓库是否登录,如果没有登录就会调用TortoiseSVN界面让用户登录
p4_check_login检查Perforce仓库是否登录,没有登陆就弹窗消息提醒
get_kaitian_files用来组装拉取Codeunifer里面的ini配置的入口
clone_from_codeunifier_by_symbol_list用来组装拉取Codeunifer里面的ini配置的另一个入口,需要配合界面上的ResourceProjects
change_ue_settings修改ue中的设置

get_kaitian_files和clone_from_codeunifier_by_symbol_list的区别只是用什么symbol来拉取资源文件,这个词会出现在下面的介绍中。

@setup_command('get_kaitian_files')
def clone_from_codeunifier(version_branch='trunk', symbol='all'):
	...

@setup_command('clone_from_codeunifier_by_symbol_list')
def clone_from_codeunifier_by_symbol_list(version_branch='trunk', symbol_list_str='[]'):
	...

CustomCmds 自定义指令

可以调用Plugins\Pangu\Content\Python\PanguSetup\ClientSrc\PanguSetupMgr.py中的run_custom_cmds_by_part函数开始运行指令。

请注意:下面例子中两个按钮的名称和位置可能随版本而修改,具体请参考对应版本的文档或者咨询Pangu开发者。

在现在的Pangu中ArtDataHouToolsUpdate的模块决定了ArtUpdate按钮执行什么逻辑。 avatar avatar 同理在现在的Pangu中AllUpdate的模块决定了OneForAllUpdate按钮执行什么逻辑。 avatar 图中只展示了部分的语句,详细请阅读一键安装配置中对于配置一键热更的部分
avatar

当前版本支持的指令大全

所有的指令都在Plugins\Pangu\Content\Python\Plugins\PanguSetup\ClientSrc\SetupCommand\Actions文件下的py文件中。

指令简单说明
svn_check_login检查svn是否登录并且有权限拉取svn仓库
check_uncommitted_files检查是否有未提交的文件,如果有则提示用户进行提交
reset_uncommit_files_flag重置未提交文件的标志位
deal_svn_conflict进入处理svn冲突界面
p4_check_login检查P4是否登录
get_p4_workspace_list用于UI界面获取P4的工作空间列表
init_workspace_root_path初始化工作空间根目录的路径,用于后续的p4操作
p4_sync同步P4仓库某个路径
map_local_dir_to_drive设置网络映射盘的路径到本地
net_disk_mapping映射网络盘到本地
auto_reboot_net_disk_mapping自动重启网络映射盘的路径到本地
check_cloud_disk_need_login检查是否需要登录Pangu来激活云盘Token,如果需要则弹窗提示用户进行登录
get_mount_cloud_disk_cmd获取挂载云盘的命令,用于管理员权限下运行
mount_cloud_disk执行挂载云盘
check_cloud_file_use检查云盘上的软件是否仍然被打开占用,强制卸载云盘可能损失数据,但是这个命令时间消耗比较大,不推荐使用
set_env设置系统变量
ininit_user_name读取用户名
set_user_variable设置用户变量,用于非管理员权限下运行
init_user_install_env_variables_from_ui从用户ui上保存用户的选项
rmdir删除目录(非管理员权限)
admin_rmdir删除目录(管理员权限)
ensure_dir通过把原来目录重命名的方式来确保路径是空的可以用来操作
show_occupied_backup_paths使用ui界面来告诉用户是否有占用目录
copyfile拷贝文件(夹)
change_ue_settings修改ue中的设置
set_houdini_file_association设置使用houdini来默认打开某个后缀的文件
gen_packages_kaitian_json生成kaitian的json配置文件
gen_packages_titan_json生成titan的kaitian.json配置文件
check_houdini_path检查houdini的路径是否正确,如果不正确则弹窗提示用户修改(用于ui)
crack_houdini绿色使用Houidini
install_gaea静默安装gaea并且修改用户的注册表信息
show_msg_dialog弹窗提示用户,一般用于ui界面上的操作
call_bat调用bat文件
show_setup_tab弹出一键安装的界面
close_setup_ui关闭一键安装的界面
check_pangu_login检查是否登录Pangu
check_admin_finish检查是否完成了管理员权限的安装
change_appdump_ini修改appdump的设置
get_install_ddl_cmd获取安装deadline的命令,用于管理员权限下运行
get_install_dl_sbm_cmd获取安装deadline的submit的命令,用于管理员权限下运行
run_install_ddl_worker安装dealine worker
get_kaitian_files用来组装拉取Codeunifer里面的ini配置的入口
clone_from_codeunifier_by_symbol_list用来组装拉取Codeunifer里面的ini配置的另一个入口,需要配合界面上的ResourceProjects
force_update_kaitian_files强制更新kaitian的ini配置文件
reset_install重置一键安装的状态
cancel_install取消安装
finish_install完成安装
run_admin_cmds运行管理员权限的指令
run_user_cmds运行非管理员权限的指令
run_custom_cmds运行自定义的指令
save_user_config保存用户配置
set_restart_editor_flag设置是否需要重启编辑器
set_install_process设置安装进度条
reload_setup_config重新加载一键安装的配置
change_ui_state设置界面状态机跳转到的状态
get_project_list获取项目列表,用于ui显示
get_codeunifier_ui_list获取codeunifier中过滤后列表到job中,用于ui显示
get_kaitian_files_version_list获取kaitian的ini配置文件中版本列表,用于ui显示
check_houdini_engine_running检查houdini的引擎是否运行中,如果正在运行则弹窗提示用户保存并关闭
add_detach_content_path解除ue对于Content目录下的某个文件夹下的所有的UAsset的引用
detach_content_packages解除ue对于Content目录下的某个文件夹下的所有的UAsset的引用
check_write_permission检查是否有写权限,如果没有则弹窗报错

为了兼容旧版仍然存在可以使用但不推荐使用命令

指令简单说明
svn_checkout使用原生的svn指令进行checkout操作
svn_update使用原生的svn指令进行update操作
svn_update_force使用原生的svn指令进行强制update操作
svn_switch_force使用原生的svn指令进行强制switch操作
update_svn_sub_dir_externals使用原生的svn指令进行强制update操作并遍历所有外链文件夹逐个update
get_net_drive_name_list获取可用的网络映射盘的盘符,用于UI界面显示
init_user_install_infos初始化用户的安装信息,用于后续的安装使用
init_mini_pkg_install_infos初始化mini包的用户的安装信息,用于后续的安装使用
mklink使用管理员权限创建软链接
exe_mklink不使用管理员权限创建软链接
set_setup_tab_topmost设置界面顶部是否为最上面的tab

xxxSetupUI.json详细介绍

所在目录:Plugins\Pangu\Content\Python\Plugins\PanguSetup\ClientConfig\UIConfig\

命名:项目名称+SetupUI.json

有了这个文件后,Pangu的一键安装界面上的Project选到这个项目名称的时候就会使用这个ui配置文件中的界面控件和指令。在进行完修改配置文件后可以看到一键安装的界面修改。

ui配置文件中常用指令

这部分指令无需管理员权限,可以在后台执行,也是按顺序执行。 以kaitian为例进行说明,选取项目常用语句进行说明,具体各个项目的配置请自行取舍修改。

指令简单说明
reload_setup_config切换project后,ui切换后先保留用户已经输入的数据,重新载入setupconfig
init_user_install_env_variables_from_ui从ui上读取用户数据存入运行内存中
save_user_config保存用户config到本地
change_ui_stateui阶段跳转
show_ui_installing_img展示一键安装的进度条
close_ui_installing_img关闭显示一键安装的进度条

xxx.ini详细介绍

所在目录:Plugins\Pangu\Content\Python\Plugins\CodeUnifier\config\项目名称

命名:任意名称.ini

有了这个文件后,Pangu的一键安装界面上的Project选到这个项目名称并且满足对应的过滤条件的时候就会使用这个ini文件中的配置来拉取组装用户本地文件。

ini配置文件中常用指令

指令简单说明
switch_local_root切换拉取这个part的根目录
set_default_branch设置这个part的default branch名称
link_to_local将当前目录映射到本地某个目录
link_to_sub_local将当前目录的子目录映射到本地某个子目录
格式:
子文件夹相对路径:需要映射到的本地文件夹绝对路径