[localization] use embedded localization file

* Use an unique name and delete on exit
* Also add a bunch of message IDs
This commit is contained in:
Pete Batard 2013-07-28 21:26:14 +01:00
parent 79c16c0d14
commit fed14a42f4
9 changed files with 278 additions and 126 deletions

View File

@ -1,73 +0,0 @@
# This file should be saved as UTF-8 no-BOM
l "Chinese (Simplified)" 0x0804, 0x1004, 0x0404, 0x0c04, 0x1404
t IDS_DEVICE_TXT "设备"
t IDS_PARTITION_TYPE_TXT "分区计划和目标系统类型"
t IDS_FILESYSTEM_TXT "文件系统"
t IDS_CLUSTERSIZE_TXT "簇的大小"
t IDS_LABEL_TXT "新卷标"
t IDS_FORMATOPTIONS_TXT "格式选项 "
t IDC_BADBLOCKS "检查设备的坏块:"
t IDC_QUICKFORMAT "快速格式化"
t IDC_BOOT "创建一个可启动的磁盘使用:"
r IDC_BOOT +10,0
t IDC_SET_ICON "创建扩展标签和图标文件"
m IDC_ADVANCED -24,0
m IDC_NBPASSES 8,0
m IDC_BOOTTYPE 8,0
m IDC_SELECT_ISO 6,0
t IDC_ABOUT "关于..."
t IDC_LOG "日志"
m IDC_LOG -5,0
r IDC_LOG +5,0
t IDCANCEL "关闭"
t IDC_START "开始"
t IDC_ADVANCED_GROUP "高级选项"
t IDC_ENABLE_FIXED_DISKS "列表固定(非flash)或USB磁盘分区"
t IDC_EXTRA_PARTITION "添加修复旧的BIOS额外的分区校准等等"
t IDC_RUFUS_MBR "使用 Rufus MBR BIOS ID:"
p IDD_ABOUTBOX
t IDD_ABOUTBOX "关于 Rufus"
t IDC_ABOUT_LICENSE "许可证"
t IDC_ABOUT_UPDATES "更新"
t IDOK "确定"
p IDD_ISO_EXTRACT
t IDD_ISO_EXTRACT "复制ISO文件..."
t IDC_ISO_FILENAME "打开ISO映像 - 请稍候..."
t IDC_ISO_ABORT "取消"
p IDD_LICENSE
t IDD_LICENSE "Rufus 许可证"
t IDOK "取消"
p IDD_NOTIFICATION
t IDC_MORE_INFO "更多信息"
t IDYES "是"
t IDNO "否"
p IDD_LOG
t IDD_LOG "日志"
t IDC_LOG_CLEAR "清除日志"
t IDC_LOG_SAVE "保存日志"
t IDCANCEL "关闭日志"
p IDD_LICENSE
t IDOK "取消"
p IDD_UPDATE_POLICY
t IDD_UPDATE_POLICY "更新方案和设置"
t IDS_UPDATE_SETTINGS_TXT "设置"
t IDS_UPDATE_FREQUENCY_TXT "检查更新:"
t IDS_INCLUDE_BETAS_TXT "包括测试版本:"
t IDC_CHECK_NOW "立即检查"
t IDCANCEL "取消"
p IDD_NEW_VERSION
t IDD_NEW_VERSION "检查更新 - Rufus"
t IDS_NEW_VERSION_AVAIL_TXT "更新的版本可用。请下载最新版本!"
t IDC_WEBSITE "点击这里进入网站"
t IDS_NEW_VERSION_NOTES_TXT "发行说明"
t IDS_NEW_VERSION_DOWNLOAD_TXT "下载"
t IDC_DOWNLOAD "下载"
t IDCANCEL "取消"

View File

@ -1,8 +1,17 @@
# This file should be saved as UTF-8, no-BOM
################################################################################
l "English" 0x0409, 0x0809, 0x0c09, 0x1009, 0x1409, 0x1809, 0x1c09, 0x2009, 0x2409, 0x2809, 0x2c09, 0x3009, 0x3409, 0x3809, 0x3c09, 0x4009, 0x4409, 0x4809
s IDD_MESSAGES
t MSG_001 "WARNING: ALL DATA ON DEVICE '%s' WILL BE DESTROYED.\n"
t MSG_001 "Other instance detected"
t MSG_002 "Another Rufus application is running.\n"
"Please close the first application before running another one."
t MSG_003 "WARNING: ALL DATA ON DEVICE '%s' WILL BE DESTROYED.\n"
"To continue with this operation, click OK. To quit click CANCEL."
t MSG_004 "Rufus update policy"
t MSG_005 "Do you want to allow Rufus to check for application updates online?"
################################################################################
l "French" 0x040c, 0x080c, 0x0c0c, 0x100c, 0x140c, 0x180c, 0x1c0c, 0x200c, 0x240c, 0x280c, 0x2c0c, 0x300c, 0x340c, 0x380c, 0xe40c
s IDD_DIALOG
t IDS_FORMATOPTIONS_TXT "Options de Formattage "
@ -18,9 +27,15 @@ t IDC_SET_ICON "Ajouter un label étendu et une icône"
m IDC_ADVANCED +36 0
s IDD_MESSAGES
t MSG_001 "ATTENTION: TOUTES LES DONNEES SUR LE VOLUME '%s' VONT ETRE EFFACEES.\n"
t MSG_001 "Autre instance detectée"
t MSG_002 "Une autre instance de Rufus est en cours d'exécution.\n"
"Veuillez fermer la première instance avant d'en lancer une seconde."
t MSG_003 "ATTENTION: TOUTES LES DONNEES SUR LE VOLUME '%s' VONT ETRE EFFACEES.\n"
"Pour continuer cette operation, cliquez sur OK.\nPour quitter cliquez sur ANNULER."
t MSG_004 "Mises à jour"
t MSG_005 "Voulez-vous authoriser Rufus à chercher des mises à jour en ligne?"
################################################################################
l "Chinese (Traditional)" 0x0404, 0x0804, 0x0c04, 0x1004, 0x1404
s IDD_DIALOG
t IDS_DEVICE_TXT "设备"
@ -94,3 +109,12 @@ t IDS_NEW_VERSION_NOTES_TXT "发行说明"
t IDS_NEW_VERSION_DOWNLOAD_TXT "下载"
t IDC_DOWNLOAD "下载"
t IDCANCEL "取消"
s IDD_MESSAGES
t MSG_001 "Other instance detected"
t MSG_002 "Another Rufus application is running.\n"
"Please close the first application before running another one."
t MSG_003 "WARNING: ALL DATA ON DEVICE '%s' WILL BE DESTROYED.\n"
"To continue with this operation, click OK. To quit click CANCEL."
t MSG_004 "更新方案和设置"
t MSG_005 "你要允許此應用程序檢查更新?"

View File

@ -99,6 +99,104 @@ const loc_control_id control_id[] = {
LOC_CTRL(IDS_NEW_VERSION_NOTES_TXT),
LOC_CTRL(MSG_000),
LOC_CTRL(MSG_001),
LOC_CTRL(MSG_002),
LOC_CTRL(MSG_003),
LOC_CTRL(MSG_004),
LOC_CTRL(MSG_005),
LOC_CTRL(MSG_006),
LOC_CTRL(MSG_007),
LOC_CTRL(MSG_008),
LOC_CTRL(MSG_009),
LOC_CTRL(MSG_010),
LOC_CTRL(MSG_011),
LOC_CTRL(MSG_012),
LOC_CTRL(MSG_013),
LOC_CTRL(MSG_014),
LOC_CTRL(MSG_015),
LOC_CTRL(MSG_016),
LOC_CTRL(MSG_017),
LOC_CTRL(MSG_018),
LOC_CTRL(MSG_019),
LOC_CTRL(MSG_020),
LOC_CTRL(MSG_021),
LOC_CTRL(MSG_022),
LOC_CTRL(MSG_023),
LOC_CTRL(MSG_024),
LOC_CTRL(MSG_025),
LOC_CTRL(MSG_026),
LOC_CTRL(MSG_027),
LOC_CTRL(MSG_028),
LOC_CTRL(MSG_029),
LOC_CTRL(MSG_030),
LOC_CTRL(MSG_031),
LOC_CTRL(MSG_032),
LOC_CTRL(MSG_033),
LOC_CTRL(MSG_034),
LOC_CTRL(MSG_035),
LOC_CTRL(MSG_036),
LOC_CTRL(MSG_037),
LOC_CTRL(MSG_038),
LOC_CTRL(MSG_039),
LOC_CTRL(MSG_040),
LOC_CTRL(MSG_041),
LOC_CTRL(MSG_042),
LOC_CTRL(MSG_043),
LOC_CTRL(MSG_044),
LOC_CTRL(MSG_045),
LOC_CTRL(MSG_046),
LOC_CTRL(MSG_047),
LOC_CTRL(MSG_048),
LOC_CTRL(MSG_049),
LOC_CTRL(MSG_050),
LOC_CTRL(MSG_051),
LOC_CTRL(MSG_052),
LOC_CTRL(MSG_053),
LOC_CTRL(MSG_054),
LOC_CTRL(MSG_055),
LOC_CTRL(MSG_056),
LOC_CTRL(MSG_057),
LOC_CTRL(MSG_058),
LOC_CTRL(MSG_059),
LOC_CTRL(MSG_060),
LOC_CTRL(MSG_061),
LOC_CTRL(MSG_062),
LOC_CTRL(MSG_063),
LOC_CTRL(MSG_064),
LOC_CTRL(MSG_065),
LOC_CTRL(MSG_066),
LOC_CTRL(MSG_067),
LOC_CTRL(MSG_068),
LOC_CTRL(MSG_069),
LOC_CTRL(MSG_070),
LOC_CTRL(MSG_071),
LOC_CTRL(MSG_072),
LOC_CTRL(MSG_073),
LOC_CTRL(MSG_074),
LOC_CTRL(MSG_075),
LOC_CTRL(MSG_076),
LOC_CTRL(MSG_077),
LOC_CTRL(MSG_078),
LOC_CTRL(MSG_079),
LOC_CTRL(MSG_080),
LOC_CTRL(MSG_081),
LOC_CTRL(MSG_082),
LOC_CTRL(MSG_083),
LOC_CTRL(MSG_084),
LOC_CTRL(MSG_085),
LOC_CTRL(MSG_086),
LOC_CTRL(MSG_087),
LOC_CTRL(MSG_088),
LOC_CTRL(MSG_089),
LOC_CTRL(MSG_090),
LOC_CTRL(MSG_091),
LOC_CTRL(MSG_092),
LOC_CTRL(MSG_093),
LOC_CTRL(MSG_094),
LOC_CTRL(MSG_095),
LOC_CTRL(MSG_096),
LOC_CTRL(MSG_097),
LOC_CTRL(MSG_098),
LOC_CTRL(MSG_099),
LOC_CTRL(IDOK),
LOC_CTRL(IDCANCEL),
LOC_CTRL(IDABORT),

View File

@ -369,6 +369,24 @@ static __inline DWORD GetTempPathU(DWORD nBufferLength, char* lpBuffer)
return ret;
}
static __inline DWORD GetTempFileNameU(char* lpPathName, char* lpPrefixString, UINT uUnique, char* lpTempFileName)
{
DWORD ret = 0, err = ERROR_INVALID_DATA;
wconvert(lpPathName);
wconvert(lpPrefixString);
walloc(lpTempFileName, MAX_PATH);
ret =GetTempFileNameW(wlpPathName, wlpPrefixString, uUnique, wlpTempFileName);
err = GetLastError();
if ((ret != 0) && ((ret = wchar_to_utf8_no_alloc(wlpTempFileName, lpTempFileName, MAX_PATH)) == 0)) {
err = GetLastError();
}
wfree(lpTempFileName);
wfree(lpPrefixString);
wfree(lpPathName);
SetLastError(err);
return ret;
}
static __inline DWORD GetModuleFileNameU(HMODULE hModule, char* lpFilename, DWORD nSize)
{
DWORD ret = 0, err = ERROR_INVALID_DATA;

View File

@ -110,6 +110,104 @@
#define IDS_NEW_VERSION_NOTES_TXT 2011
#define MSG_000 3000
#define MSG_001 3001
#define MSG_002 3002
#define MSG_003 3003
#define MSG_004 3004
#define MSG_005 3005
#define MSG_006 3006
#define MSG_007 3007
#define MSG_008 3008
#define MSG_009 3009
#define MSG_010 3010
#define MSG_011 3011
#define MSG_012 3012
#define MSG_013 3013
#define MSG_014 3014
#define MSG_015 3015
#define MSG_016 3016
#define MSG_017 3017
#define MSG_018 3018
#define MSG_019 3019
#define MSG_020 3020
#define MSG_021 3021
#define MSG_022 3022
#define MSG_023 3023
#define MSG_024 3024
#define MSG_025 3025
#define MSG_026 3026
#define MSG_027 3027
#define MSG_028 3028
#define MSG_029 3029
#define MSG_030 3030
#define MSG_031 3031
#define MSG_032 3032
#define MSG_033 3033
#define MSG_034 3034
#define MSG_035 3035
#define MSG_036 3036
#define MSG_037 3037
#define MSG_038 3038
#define MSG_039 3039
#define MSG_040 3040
#define MSG_041 3041
#define MSG_042 3042
#define MSG_043 3043
#define MSG_044 3044
#define MSG_045 3045
#define MSG_046 3046
#define MSG_047 3047
#define MSG_048 3048
#define MSG_049 3049
#define MSG_050 3050
#define MSG_051 3051
#define MSG_052 3052
#define MSG_053 3053
#define MSG_054 3054
#define MSG_055 3055
#define MSG_056 3056
#define MSG_057 3057
#define MSG_058 3058
#define MSG_059 3059
#define MSG_060 3060
#define MSG_061 3061
#define MSG_062 3062
#define MSG_063 3063
#define MSG_064 3064
#define MSG_065 3065
#define MSG_066 3066
#define MSG_067 3067
#define MSG_068 3068
#define MSG_069 3069
#define MSG_070 3070
#define MSG_071 3071
#define MSG_072 3072
#define MSG_073 3073
#define MSG_074 3074
#define MSG_075 3075
#define MSG_076 3076
#define MSG_077 3077
#define MSG_078 3078
#define MSG_079 3079
#define MSG_080 3080
#define MSG_081 3081
#define MSG_082 3082
#define MSG_083 3083
#define MSG_084 3084
#define MSG_085 3085
#define MSG_086 3086
#define MSG_087 3087
#define MSG_088 3088
#define MSG_089 3089
#define MSG_090 3090
#define MSG_091 3091
#define MSG_092 3092
#define MSG_093 3093
#define MSG_094 3094
#define MSG_095 3095
#define MSG_096 3096
#define MSG_097 3097
#define MSG_098 3098
#define MSG_099 3099
// Next default values for new objects
//
@ -119,6 +217,6 @@
#define _APS_NEXT_RESOURCE_VALUE 404
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1071
#define _APS_NEXT_SYMED_VALUE 3000
#define _APS_NEXT_SYMED_VALUE 4000
#endif
#endif

View File

@ -102,6 +102,7 @@ static BOOL log_displayed = FALSE;
static BOOL iso_provided = FALSE;
extern BOOL force_large_fat32;
static int selection_default;
static loc_cmd* selected_locale = NULL;
char msgbox[1024], msgbox_title[32];
/*
@ -1461,7 +1462,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
char tmp[128];
static UINT uBootChecked = BST_CHECKED, uQFChecked;
static BOOL first_log_display = TRUE, user_changed_label = FALSE;
loc_cmd* selected_locale;
switch (message) {
@ -1594,17 +1594,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
break;
#ifdef RUFUS_TEST
case IDC_TEST:
if ( (!get_supported_locales("rufus.loc"))
// || ((selected_locale = get_locale_from_lcid(GetUserDefaultLCID())) == NULL) ) {
|| ((selected_locale = get_locale_from_name("French")) == NULL) ) {
uprintf("FATAL: Could not get a default locale!\n");
MessageBoxU(NULL, "Default locale is missing - the application will now exit",
"Localization failure", MB_ICONSTOP);
break;
}
uprintf("Will use locale '%s'\n", selected_locale->txt[0]);
get_loc_data_file("rufus.loc", (long)selected_locale->num[0], (long)selected_locale->num[1]);
apply_localization(IDD_DIALOG, hDlg);
break;
#endif
case IDC_ADVANCED:
@ -1786,7 +1775,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
break;
}
GetWindowTextU(hDeviceList, tmp, ARRAYSIZE(tmp));
if (MessageBoxU(hMainDialog, lmprintf(MSG_001, tmp),
if (MessageBoxU(hMainDialog, lmprintf(MSG_003, tmp),
APPLICATION_NAME, MB_OKCANCEL|MB_ICONWARNING) == IDCANCEL) {
format_op_in_progress = FALSE;
break;
@ -1925,10 +1914,13 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
const char* old_wait_option = "/W";
int i, opt, option_index = 0, argc = 0, si = 0;
BOOL attached_console = FALSE;
BYTE* loc_data;
DWORD loc_size, Size;
char tmp_path[MAX_PATH], loc_file[MAX_PATH] = "";
char** argv = NULL;
wchar_t **wenv, **wargv;
PF_DECL(__wgetmainargs);
HANDLE mutex = NULL;
HANDLE mutex = NULL, hFile = NULL;
HWND hDlg = NULL;
MSG msg;
int wait_for_mutex = 0;
@ -1938,18 +1930,34 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
{"wait", required_argument, NULL, 'w'},
{0, 0, NULL, 0}
};
#ifndef RUFUS_TEST
const char* loc_name = "rufus.loc";
BYTE* loc_data;
char loc_path[MAX_PATH];
DWORD loc_size, Size;
HANDLE hFile = NULL;
#endif
uprintf("*** " APPLICATION_NAME " init ***\n");
// Init localization
init_localization();
loc_data = (BYTE*)GetResource(hMainInstance, MAKEINTRESOURCEA(IDR_LC_RUFUS_LOC), _RT_RCDATA, "rufus.loc", &loc_size, FALSE);
GetTempPathU(sizeof(tmp_path), tmp_path);
GetTempFileNameU(tmp_path, APPLICATION_NAME, 0, loc_file);
hFile = CreateFileU(loc_file, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL, CREATE_ALWAYS, 0, 0);
if ((hFile == INVALID_HANDLE_VALUE)|| (!WriteFile(hFile, loc_data, loc_size, &Size, 0)) || (loc_size != Size)) {
safe_closehandle(hFile);
uprintf("localization: unable to extract '%s': %s.\n", loc_file, WindowsErrorString());
} else {
safe_closehandle(hFile);
uprintf("localization: extracted data to '%s'\n", loc_file);
if ( (!get_supported_locales(loc_file))
// || ((selected_locale = get_locale_from_lcid(GetUserDefaultLCID())) == NULL) ) {
|| ((selected_locale = get_locale_from_name("French")) == NULL) ) {
uprintf("FATAL: Could not access default locale!\n");
MessageBoxU(NULL, "The default locale data is missing. This application will now exit.",
"Fatal error", MB_ICONSTOP);
goto out;
}
uprintf("localization: using locale '%s'\n", selected_locale->txt[0]);
get_loc_data_file(loc_file, (long)selected_locale->num[0], (long)selected_locale->num[1]);
}
// Reattach the console, if we were started from commandline
if (AttachConsole(ATTACH_PARENT_PROCESS) != 0) {
@ -2010,9 +2018,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
mutex = CreateMutexA(NULL, TRUE, "Global/" APPLICATION_NAME);
}
if ((mutex == NULL) || (GetLastError() == ERROR_ALREADY_EXISTS)) {
MessageBoxU(NULL, "Another " APPLICATION_NAME " application is running.\n"
"Please close the first application before running another one.",
"Other instance detected", MB_ICONSTOP);
MessageBoxU(NULL, lmprintf(MSG_002), lmprintf(MSG_001), MB_ICONSTOP);
goto out;
}
@ -2037,27 +2043,6 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
// 0x9e disables removable and fixed drive notifications
SetLGP(FALSE, &existing_key, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", "NoDriveTypeAutorun", 0x9e);
#ifndef RUFUS_TEST
// Extract the embedded localization data into the user's temp dir
loc_data = (BYTE*)GetResource(hMainInstance, MAKEINTRESOURCEA(IDR_LC_RUFUS_LOC), _RT_RCDATA, loc_name, &loc_size, FALSE);
GetTempPathU(sizeof(loc_path), loc_path);
safe_strcat(loc_path, sizeof(loc_name), loc_name);
// TODO: make sure we fail if we can't extract the file as we'll miss all the messages
// Force Chinese localization from embedded rufus.loc file
// TODO: REMOVE ME!
hFile = CreateFileU(loc_path, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL, CREATE_ALWAYS, 0, 0);
if ((hFile == INVALID_HANDLE_VALUE)|| (!WriteFile(hFile, loc_data, loc_size, &Size, 0)) || (loc_size != Size)) {
uprintf("Unable to create file '%s': %s.\n", loc_path, WindowsErrorString());
} else {
uprintf("Successfully extracted '%s'\n", loc_path);
get_loc_data_file(loc_path);
}
safe_closehandle(hFile);
#endif
// Create the main Window
hDlg = CreateDialogW(hInstance, MAKEINTRESOURCEW(IDD_DIALOG), NULL, MainCallback);
if (hDlg == NULL) {
@ -2127,6 +2112,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
}
out:
if (loc_file[0] != 0)
DeleteFileU(loc_file);
DestroyAllTooltips();
exit_localization();
safe_free(iso_path);

View File

@ -17,6 +17,7 @@
*/
#include <windows.h>
#include <winioctl.h> // for DISK_GEOMETRY
#include <malloc.h>
#include <stdint.h>
#if defined(_MSC_VER)
@ -29,7 +30,7 @@
/* Program options */
#define RUFUS_DEBUG // print debug info to Debug facility
/* Features not ready for prime time and that may *DESTROY* your data - USE AT YOUR OWN RISKS! */
#define RUFUS_TEST
// #define RUFUS_TEST
#define APPLICATION_NAME "Rufus"
#define COMPANY_NAME "Akeo Consulting"

View File

@ -184,7 +184,7 @@ END
3 TEXTINCLUDE
BEGIN
"\r\n"
"IDR_LC_RUFUS_LOC RCDATA ""../res/locale/rufus.loc""\r\n"
"IDR_LC_RUFUS_LOC RCDATA ""../res/localization/rufus.loc""\r\n"
"IDR_SL_LDLINUX_V4_BSS RCDATA ""../res/syslinux/ldlinux_v4.bss""\r\n"
"IDR_SL_LDLINUX_V4_SYS RCDATA ""../res/syslinux/ldlinux_v4.sys""\r\n"
"IDR_SL_LDLINUX_V5_BSS RCDATA ""../res/syslinux/ldlinux_v5.bss""\r\n"
@ -333,7 +333,7 @@ IDI_DOWN ICON "../res/down.ico"
// Generated from the TEXTINCLUDE 3 resource.
//
IDR_LC_RUFUS_LOC RCDATA "../res/locale/rufus.loc"
IDR_LC_RUFUS_LOC RCDATA "../res/localization/rufus.loc"
IDR_SL_LDLINUX_V4_BSS RCDATA "../res/syslinux/ldlinux_v4.bss"
IDR_SL_LDLINUX_V4_SYS RCDATA "../res/syslinux/ldlinux_v4.sys"
IDR_SL_LDLINUX_V5_BSS RCDATA "../res/syslinux/ldlinux_v5.bss"

View File

@ -1065,8 +1065,7 @@ BOOL SetUpdateCheck(void)
uprintf("Short name used - Disabling initial update policy prompt\n");
enable_updates = TRUE;
} else {
enable_updates = Notification(MSG_QUESTION, &more_info, APPLICATION_NAME " update policy",
"Do you want to allow " APPLICATION_NAME " to check for application updates?\n");
enable_updates = Notification(MSG_QUESTION, &more_info, lmprintf(MSG_004), lmprintf(MSG_005));
}
if (!enable_updates) {
WriteRegistryKey32(REGKEY_HKCU, REGKEY_UPDATE_INTERVAL, -1);