AppFlowy/frontend/scripts/white_label/windows_white_label.sh

151 lines
4.8 KiB
Bash

#!/bin/bash
APP_NAME="AppFlowy"
APP_IDENTIFIER="com.appflowy.appflowy"
COMPANY_NAME="AppFlowy Inc."
COPYRIGHT="Copyright © 2025 AppFlowy Inc."
ICON_PATH=""
show_usage() {
echo "Usage: $0 [options]"
echo "Options:"
echo " --app-name Set the application name"
echo " --app-identifier Set the application identifier"
echo " --company-name Set the company name"
echo " --copyright Set the copyright information"
echo " --icon-path Set the path to the application icon (.ico file)"
echo " --help Show this help message"
echo ""
echo "Example:"
echo " $0 --app-name \"MyCompany\" --app-identifier \"com.mycompany.mycompany\" \\"
echo " --company-name \"MyCompany Ltd.\" --copyright \"Copyright © 2025 MyCompany Ltd.\" \\"
echo " --icon-path \"./assets/icons/company.ico\""
}
while [[ $# -gt 0 ]]; do
case $1 in
--app-name)
APP_NAME="$2"
shift 2
;;
--app-identifier)
APP_IDENTIFIER="$2"
shift 2
;;
--company-name)
COMPANY_NAME="$2"
shift 2
;;
--copyright)
COPYRIGHT="$2"
shift 2
;;
--icon-path)
ICON_PATH="$2"
shift 2
;;
--output-dir)
OUTPUT_DIR="$2"
shift 2
;;
--help)
show_usage
exit 0
;;
*)
echo "Unknown option: $1"
show_usage
exit 1
;;
esac
done
if [ -z "$APP_NAME" ]; then
echo -e "\033[31mError: Application name is required\033[0m"
exit 1
fi
if [ -z "$APP_IDENTIFIER" ]; then
echo -e "\033[31mError: Application identifier is required\033[0m"
exit 1
fi
if [ -z "$COMPANY_NAME" ]; then
echo -e "\033[31mError: Company name is required\033[0m"
exit 1
fi
if [ -z "$COPYRIGHT" ]; then
echo -e "\033[31mError: Copyright information is required\033[0m"
exit 1
fi
if [ -z "$ICON_PATH" ]; then
echo -e "\033[31mError: Icon path is required\033[0m"
exit 1
fi
echo "Starting Windows application customization..."
if sed --version >/dev/null 2>&1; then
SED_INPLACE="-i"
else
SED_INPLACE="-i ''"
fi
update_runner_files() {
runner_dir="appflowy_flutter/windows/runner"
if [ -f "$runner_dir/Runner.rc" ]; then
sed $SED_INPLACE "s/VALUE \"CompanyName\", .*$/VALUE \"CompanyName\", \"$COMPANY_NAME\"/" "$runner_dir/Runner.rc"
sed $SED_INPLACE "s/VALUE \"FileDescription\", .*$/VALUE \"FileDescription\", \"$APP_NAME\"/" "$runner_dir/Runner.rc"
sed $SED_INPLACE "s/VALUE \"InternalName\", .*$/VALUE \"InternalName\", \"$APP_NAME\"/" "$runner_dir/Runner.rc"
sed $SED_INPLACE "s/VALUE \"OriginalFilename\", .*$/VALUE \"OriginalFilename\", \"$APP_NAME.exe\"/" "$runner_dir/Runner.rc"
sed $SED_INPLACE "s/VALUE \"LegalCopyright\", .*$/VALUE \"LegalCopyright\", \"$COPYRIGHT\"/" "$runner_dir/Runner.rc"
sed $SED_INPLACE "s/VALUE \"ProductName\", .*$/VALUE \"ProductName\", \"$APP_NAME\"/" "$runner_dir/Runner.rc"
echo -e "Runner.rc updated successfully"
else
echo -e "\033[31mRunner.rc file not found\033[0m"
fi
}
update_icon() {
if [ ! -z "$ICON_PATH" ] && [ -f "$ICON_PATH" ]; then
app_icon_path="appflowy_flutter/windows/runner/resources/app_icon.ico"
cp "$ICON_PATH" "$app_icon_path"
echo -e "Application icon updated successfully"
else
echo -e "\033[31mApplication icon file not found\033[0m"
fi
}
update_cmake_lists() {
cmake_file="appflowy_flutter/windows/CMakeLists.txt"
if [ -f "$cmake_file" ]; then
sed $SED_INPLACE "s/set(BINARY_NAME .*)$/set(BINARY_NAME \"$APP_NAME\")/" "$cmake_file"
echo -e "CMake configuration updated successfully"
else
echo -e "\033[31mCMake configuration file not found\033[0m"
fi
}
update_main_cpp() {
main_cpp_file="appflowy_flutter/windows/runner/main.cpp"
if [ -f "$main_cpp_file" ]; then
sed $SED_INPLACE "s/HANDLE hMutexInstance = CreateMutex(NULL, TRUE, L\"AppFlowyMutex\");/HANDLE hMutexInstance = CreateMutex(NULL, TRUE, L\"${APP_NAME}Mutex\");/" "$main_cpp_file"
sed $SED_INPLACE "s/HWND handle = FindWindowA(NULL, \"AppFlowy\");/HWND handle = FindWindowA(NULL, \"$APP_NAME\");/" "$main_cpp_file"
sed $SED_INPLACE "s/if (window.SendAppLinkToInstance(L\"AppFlowy\")) {/if (window.SendAppLinkToInstance(L\"$APP_NAME\")) {/" "$main_cpp_file"
sed $SED_INPLACE "s/if (!window.Create(L\"AppFlowy\", origin, size)) {/if (!window.Create(L\"$APP_NAME\", origin, size)) {/" "$main_cpp_file"
echo -e "main.cpp updated successfully"
else
echo -e "\033[31mMain.cpp file not found\033[0m"
fi
}
echo "Applying customizations..."
update_runner_files
update_icon
update_cmake_lists
update_main_cpp
echo "Windows application customization completed successfully!"