一键安装指令大全
提供关于一键安装涉及到的所有配置和指令的说明。
一键安装的配置涉及三个文档:
xxxSetupConfig.json:用于配置一键安装需要执行的指令,xxx一般为项目代码或名称。
SetupConfig.json文件分为5个部分:
- 变量(下图红色部分):变量的值可以通过ui界面中的选择来修改
- AdminCmds(下图黄色部分):一般在这里配置一键安装中需要管理员权限的指令
- UserCmds(下图绿色部分):一般在这里配置一键安装中不需要管理员权限的指令
- CustomCmds(下图紫色部分):一般在这里配置不在一键安装入口执行的指令,比如Pangu窗口右上角的
ArtUpdate
按钮被点击后执行的指令- UserOverridableList(下图白色部分):当变量的名字出现在此部分时,用户在界面上的选择会被保存下来,在您下一次打开一键安装界面时将会保留上一次一键安装的选择
xxxSetupUI.json:用于配置一键安装界面的UI控件,xxx一般为项目代码或名称,一般与xxxSetupConfig.json
中的xxx保持一致。如果项目无修改UI控件的需求,可不配置该文件,此时会使用默认的SetupUI。
我们在二进制包体中提供了KaiTianSetupConfig.json和KaiTianSetupUI.json文件,这两份配置文件中几乎包含了最全的一键安装配置,您可以将这两份文件复制为副本,作为项目的一键安装配置文件的参考,然后按需修改内容即可。
ini配置文件:如果项目需要自己组装文件夹结构,比如从A地址拉取文件然后链接到B地址,那么可以在项目文件夹下新增ini配置文件实现。我们在KaiTian项目的文件夹下准备好了KaiTian需要的各种组装文件夹组装的ini配置文件,您可以将该文件复制为一份副本,作为项目组装的ini配置文件的参考,然后按需修改其中的模块。一般项目需要组装的文件夹复杂度远远小于KaiTian,只需要删除大部分其中的条目,以及替换仓库地址即可。
这些变量在代码中有其他用途,或者会被系统运行自动写入,请不要用他们来存项目自定义的值。
- 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:当前项目运行的根目录
一键安装的变量特殊处理的一点是,允许变量替换,如果变量的值是一个字符串且被大括号{ }包围,则认为要被会取大括号内的字符串为变量名的变量的值与其他字符串拼接。
一键安装中使用的指令如下图所示,可由指令名(图中红色)、执行条件(图中蓝色)、执行参数(图中绿色)三个部分组成。
指令名与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中引号用\"
表示。当条件为真的时候这条语句才会实际执行。
管理员权限通过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来默认打开某个后缀的文件 |
这部分指令无需管理员权限,可以在后台执行,也是按顺序执行。 以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='[]'):
...
可以调用Plugins\Pangu\Content\Python\PanguSetup\ClientSrc\PanguSetupMgr.py中的run_custom_cmds_by_part
函数开始运行指令。
请注意:下面例子中两个按钮的名称和位置可能随版本而修改,具体请参考对应版本的文档或者咨询Pangu开发者。
在现在的Pangu中ArtDataHouToolsUpdate的模块决定了ArtUpdate按钮执行什么逻辑。
同理在现在的Pangu中AllUpdate的模块决定了OneForAllUpdate按钮执行什么逻辑。
图中只展示了部分的语句,详细请阅读一键安装配置中对于配置一键热更的部分。
所有的指令都在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 |
所在目录:Plugins\Pangu\Content\Python\Plugins\PanguSetup\ClientConfig\UIConfig\
命名:项目名称+SetupUI.json
有了这个文件后,Pangu的一键安装界面上的Project选到这个项目名称的时候就会使用这个ui配置文件中的界面控件和指令。在进行完修改配置文件后可以看到一键安装的界面修改。
这部分指令无需管理员权限,可以在后台执行,也是按顺序执行。 以kaitian为例进行说明,选取项目常用语句进行说明,具体各个项目的配置请自行取舍修改。
指令 | 简单说明 |
---|---|
reload_setup_config | 切换project后,ui切换后先保留用户已经输入的数据,重新载入setupconfig |
init_user_install_env_variables_from_ui | 从ui上读取用户数据存入运行内存中 |
save_user_config | 保存用户config到本地 |
change_ui_state | ui阶段跳转 |
show_ui_installing_img | 展示一键安装的进度条 |
close_ui_installing_img | 关闭显示一键安装的进度条 |
所在目录:Plugins\Pangu\Content\Python\Plugins\CodeUnifier\config\项目名称
命名:任意名称.ini
有了这个文件后,Pangu的一键安装界面上的Project选到这个项目名称并且满足对应的过滤条件的时候就会使用这个ini文件中的配置来拉取组装用户本地文件。
指令 | 简单说明 |
---|---|
switch_local_root | 切换拉取这个part的根目录 |
set_default_branch | 设置这个part的default branch名称 |
link_to_local | 将当前目录映射到本地某个目录 |
link_to_sub_local | 将当前目录的子目录映射到本地某个子目录 格式: 子文件夹相对路径:需要映射到的本地文件夹绝对路径 |