+static const tchar *usage_strings[] = {
+[CMD_APPEND] =
+T(
+" %"TS" (DIRECTORY | NTFS_VOLUME) WIMFILE\n"
+" [IMAGE_NAME [IMAGE_DESCRIPTION]] [--boot] [--check]\n"
+" [--nocheck] [--flags EDITION_ID] [--verbose]\n"
+" [--dereference] [--config=FILE] [--threads=NUM_THREADS]\n"
+" [--rebuild] [--unix-data] [--source-list] [--no-acls]\n"
+" [--strict-acls] [--rpfix] [--norpfix] [--pipable]\n"
+" [--not-pipable]\n"
+),
+[CMD_APPLY] =
+T(
+" %"TS" WIMFILE [(IMAGE_NUM | IMAGE_NAME | all)]\n"
+" (DIRECTORY | NTFS_VOLUME) [--check] [--hardlink]\n"
+" [--symlink] [--verbose] [--ref=\"GLOB\"] [--unix-data]\n"
+" [--no-acls] [--strict-acls] [--rpfix] [--norpfix]\n"
+" [--include-invalid-names]\n"
+),
+[CMD_CAPTURE] =
+T(
+" %"TS" (DIRECTORY | NTFS_VOLUME) WIMFILE\n"
+" [IMAGE_NAME [IMAGE_DESCRIPTION]] [--boot] [--check]\n"
+" [--nocheck] [--compress=TYPE] [--flags EDITION_ID]\n"
+" [--verbose] [--dereference] [--config=FILE]\n"
+" [--threads=NUM_THREADS] [--unix-data] [--source-list]\n"
+" [--no-acls] [--strict-acls] [--rpfix] [--norpfix]\n"
+" [--pipable] [--not-pipable]\n"
+),
+[CMD_DELETE] =
+T(
+" %"TS" WIMFILE (IMAGE_NUM | IMAGE_NAME | all) [--check]\n"
+" [--soft]\n"
+),
+[CMD_DIR] =
+T(
+" %"TS" WIMFILE (IMAGE_NUM | IMAGE_NAME | all) [--path=PATH]\n"
+),
+[CMD_EXPORT] =
+T(
+" %"TS" SRC_WIMFILE (SRC_IMAGE_NUM | SRC_IMAGE_NAME | all ) \n"
+" DEST_WIMFILE [DEST_IMAGE_NAME [DEST_IMAGE_DESCRIPTION]]\n"
+" [--boot] [--check] [--nocheck] [--compress=TYPE]\n"
+" [--ref=\"GLOB\"] [--threads=NUM_THREADS] [--rebuild]\n"
+" [--pipable] [--not-pipable]\n"
+),
+[CMD_EXTRACT] =
+T(
+" %"TS" WIMFILE (IMAGE_NUM | IMAGE_NAME) [PATH...]\n"
+" [--check] [--ref=\"GLOB\"] [--verbose] [--unix-data]\n"
+" [--no-acls] [--strict-acls] [--to-stdout]\n"
+" [--dest-dir=CMD_DIR] [--include-invalid-names]\n"
+),
+[CMD_INFO] =
+T(
+" %"TS" WIMFILE [(IMAGE_NUM | IMAGE_NAME) [NEW_NAME\n"
+" [NEW_DESC]]] [--boot] [--check] [--nocheck] [--header]\n"
+" [--lookup-table] [--xml] [--extract-xml FILE]\n"
+" [--metadata]\n"
+),
+[CMD_JOIN] =
+T(
+" %"TS" OUT_WIMFILE SPLIT_WIM_PART... [--check]\n"
+),
+#if WIM_MOUNTING_SUPPORTED
+[CMD_MOUNT] =
+T(
+" %"TS" WIMFILE [(IMAGE_NUM | IMAGE_NAME)] DIRECTORY\n"
+" [--check] [--debug] [--streams-interface=INTERFACE]\n"
+" [--ref=\"GLOB\"] [--unix-data] [--allow-other]\n"
+),
+[CMD_MOUNTRW] =
+T(
+" %"TS" WIMFILE [(IMAGE_NUM | IMAGE_NAME)] DIRECTORY\n"
+" [--check] [--debug] [--streams-interface=INTERFACE]\n"
+" [--staging-dir=CMD_DIR] [--unix-data] [--allow-other]\n"
+),
+#endif
+[CMD_OPTIMIZE] =
+T(
+" %"TS" WIMFILE [--check] [--nocheck] [--recompress]\n"
+" [--threads=NUM_THREADS] [--pipable] [--not-pipable]\n"
+),
+[CMD_SPLIT] =
+T(
+" %"TS" WIMFILE SPLIT_WIM_PART_1 PART_SIZE_MB [--check]\n"
+),
+#if WIM_MOUNTING_SUPPORTED
+[CMD_UNMOUNT] =
+T(
+" %"TS" DIRECTORY [--commit] [--check] [--rebuild] [--lazy]\n"
+),
+#endif
+[CMD_UPDATE] =
+T(
+" %"TS" WIMFILE [IMAGE_NUM | IMAGE_NAME] [--check] [--rebuild]\n"
+" [--threads=NUM_THREADS] [DEFAULT_ADD_OPTIONS]\n"
+" [DEFAULT_DELETE_OPTIONS] [--command=STRING] [< CMDFILE]\n"
+),
+};
+
+static const tchar *invocation_name;
+static bool using_cmd_from_invocation_name = false;
+
+static const tchar *get_cmd_string(int cmd, bool nospace)
+{
+
+ if (using_cmd_from_invocation_name || cmd == CMD_NONE) {
+ return invocation_name;
+ } else {
+ const tchar *format;
+ static tchar buf[50];
+
+ if (nospace)
+ format = T("%"TS"-%"TS"");
+ else
+ format = T("%"TS" %"TS"");
+ tsprintf(buf, format, invocation_name, imagex_commands[cmd].name);
+ return buf;
+ }
+}
+