[PATCH 3/5] msi: Return the current date and time.

Zebediah Figura z.figura12 at gmail.com
Sun Jul 23 15:50:55 CDT 2017


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/msi/action.c  |  8 +-----
 dlls/msi/msi.rc    |  8 +++---
 dlls/msi/package.c | 74 ++++++++++++++++++++++++++++--------------------------
 3 files changed, 43 insertions(+), 47 deletions(-)

diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index 59c4610..18ec7c3 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -176,18 +176,12 @@ static void ui_actioninfo(MSIPACKAGE *package, LPCWSTR action, BOOL start,
 {
     MSIRECORD *row;
     WCHAR *template;
-    static const WCHAR format[] = 
-        {'H','H','\'',':','\'','m','m','\'',':','\'','s','s',0};
-    WCHAR message[1024];
-    WCHAR timet[0x100];
 
-    GetTimeFormatW(LOCALE_USER_DEFAULT, 0, NULL, format, timet, 0x100);
     template = msi_get_error_message(package->db, start ? MSIERR_INFO_ACTIONSTART : MSIERR_INFO_ACTIONENDED);
-    sprintfW(message, template, timet);
 
     row = MSI_CreateRecord(2);
     if (!row) return;
-    MSI_RecordSetStringW(row, 0, message);
+    MSI_RecordSetStringW(row, 0, template);
     MSI_RecordSetStringW(row, 1, action);
     MSI_RecordSetInteger(row, 2, start ? package->LastActionResult : rc);
     MSI_ProcessMessage(package, INSTALLMESSAGE_INFO, row);
diff --git a/dlls/msi/msi.rc b/dlls/msi/msi.rc
index 357bc5a..14f9866 100644
--- a/dlls/msi/msi.rc
+++ b/dlls/msi/msi.rc
@@ -73,11 +73,11 @@ STRINGTABLE
     IDS_INFO "Info [1]."
     IDS_INSTALLERROR "The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is [1]. {{The arguments are: [2], [3], [4]}}"
     IDS_OUTOFDISKSPACE "{{Disk full: }}"
-    IDS_ACTIONSTART "Action %s: [1]. [2]"
+    IDS_ACTIONSTART "Action [Time]: [1]. [2]"
     IDS_COMMONDATA "Message type: [1], Argument: [2]{, [3]}"
-    IDS_INFO_ACTIONSTART "Action start %s: [1]."
-    IDS_INFO_ACTIONENDED "Action ended %s: [1]. Return value [2]."
-    IDS_INFO_LOGGINGSTART "=== Logging started: %s  %s ==="
+    IDS_INFO_ACTIONSTART "Action start [Time]: [1]."
+    IDS_INFO_ACTIONENDED "Action ended [Time]: [1]. Return value [2]."
+    IDS_INFO_LOGGINGSTART "=== Logging started: [Date]  [Time] ==="
 
     IDS_ERR_INSERTDISK "Please insert the disk: [2]"
     IDS_ERR_CABNOTFOUND "Source file not found{{(cabinet)}}: [2]. Verify that the file exists and that you can access it."
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index 82fd718..4384d0d 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -674,7 +674,6 @@ static VOID set_installer_properties(MSIPACKAGE *package)
     HKEY hkey;
     LPWSTR username, companyname;
     SYSTEM_INFO sys_info;
-    SYSTEMTIME systemtime;
     LANGID langid;
 
     static const WCHAR szCommonFilesFolder[] = {'C','o','m','m','o','n','F','i','l','e','s','F','o','l','d','e','r',0};
@@ -736,8 +735,6 @@ static VOID set_installer_properties(MSIPACKAGE *package)
     };
     static const WCHAR szUSERNAME[] = {'U','S','E','R','N','A','M','E',0};
     static const WCHAR szCOMPANYNAME[] = {'C','O','M','P','A','N','Y','N','A','M','E',0};
-    static const WCHAR szDate[] = {'D','a','t','e',0};
-    static const WCHAR szTime[] = {'T','i','m','e',0};
     static const WCHAR szUserLanguageID[] = {'U','s','e','r','L','a','n','g','u','a','g','e','I','D',0};
     static const WCHAR szSystemLangID[] = {'S','y','s','t','e','m','L','a','n','g','u','a','g','e','I','D',0};
     static const WCHAR szProductState[] = {'P','r','o','d','u','c','t','S','t','a','t','e',0};
@@ -966,22 +963,6 @@ static VOID set_installer_properties(MSIPACKAGE *package)
     if ( set_user_sid_prop( package ) != ERROR_SUCCESS)
         ERR("Failed to set the UserSID property\n");
 
-    /* Date and time properties */
-    GetSystemTime( &systemtime );
-    if (GetDateFormatW( LOCALE_USER_DEFAULT, DATE_SHORTDATE, &systemtime,
-                        NULL, bufstr, sizeof(bufstr)/sizeof(bufstr[0]) ))
-        msi_set_property( package->db, szDate, bufstr, -1 );
-    else
-        ERR("Couldn't set Date property: GetDateFormat failed with error %d\n", GetLastError());
-
-    if (GetTimeFormatW( LOCALE_USER_DEFAULT,
-                        TIME_FORCE24HOURFORMAT | TIME_NOTIMEMARKER,
-                        &systemtime, NULL, bufstr,
-                        sizeof(bufstr)/sizeof(bufstr[0]) ))
-        msi_set_property( package->db, szTime, bufstr, -1 );
-    else
-        ERR("Couldn't set Time property: GetTimeFormat failed with error %d\n", GetLastError());
-
     set_msi_assembly_prop( package );
 
     langid = GetUserDefaultLangID();
@@ -1478,11 +1459,6 @@ UINT MSI_OpenPackageW(LPCWSTR szPackage, MSIPACKAGE **pPackage)
     MSISUMMARYINFO *si;
     BOOL delete_on_close = FALSE;
     LPWSTR productname;
-    static const WCHAR date_format[] =
-        {'M','/','d','/','y','y','y','y',0};
-    static const WCHAR time_format[] =
-        {'H','H','\'',':','\'','m','m','\'',':','\'','s','s',0};
-    WCHAR timet[100], datet[100], info_message[1024];
     WCHAR *info_template;
 
     TRACE("%s %p\n", debugstr_w(szPackage), pPackage);
@@ -1636,11 +1612,8 @@ UINT MSI_OpenPackageW(LPCWSTR szPackage, MSIPACKAGE **pPackage)
 	msiobj_release(&data_row->hdr);
 	return ERROR_OUTOFMEMORY;
     }
-    GetTimeFormatW(LOCALE_USER_DEFAULT, 0, NULL, time_format, timet, 100);
-    GetDateFormatW(LOCALE_USER_DEFAULT, 0, NULL, date_format, datet, 100);
     info_template = msi_get_error_message(package->db, MSIERR_INFO_LOGGINGSTART);
-    sprintfW(info_message, info_template, datet, timet);
-    MSI_RecordSetStringW(info_row, 0, info_message);
+    MSI_RecordSetStringW(info_row, 0, info_template);
     msi_free(info_template);
     MSI_ProcessMessage(package, INSTALLMESSAGE_INFO|MB_ICONHAND, info_row);
 
@@ -2071,14 +2044,7 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType, MSIREC
         break;
     case INSTALLMESSAGE_ACTIONSTART:
     {
-        WCHAR *template_s;
-        static const WCHAR time_format[] =
-            {'H','H','\'',':','\'','m','m','\'',':','\'','s','s',0};
-        WCHAR timet[100], template[1024];
-
-        template_s = msi_get_error_message(package->db, MSIERR_ACTIONSTART);
-        GetTimeFormatW(LOCALE_USER_DEFAULT, 0, NULL, time_format, timet, 100);
-        sprintfW(template, template_s, timet);
+        WCHAR *template = msi_get_error_message(package->db, MSIERR_ACTIONSTART);
         MSI_RecordSetStringW(record, 0, template);
         msi_free(template);
 
@@ -2335,9 +2301,45 @@ static MSIRECORD *msi_get_property_row( MSIDATABASE *db, LPCWSTR name )
     MSIQUERY *view;
     UINT r;
 
+    static const WCHAR szDate[] = {'D','a','t','e',0};
+    static const WCHAR szTime[] = {'T','i','m','e',0};
+    WCHAR *buffer;
+    int length;
+
     if (!name || !*name)
         return NULL;
 
+    if (!strcmpW(name, szDate))
+    {
+        length = GetDateFormatW(LOCALE_USER_DEFAULT, DATE_SHORTDATE, NULL, NULL, NULL, 0);
+        if (!length)
+            return NULL;
+        buffer = msi_alloc(length * sizeof(WCHAR));
+        GetDateFormatW(LOCALE_USER_DEFAULT, DATE_SHORTDATE, NULL, NULL, buffer, sizeof(WCHAR));
+
+        row = MSI_CreateRecord(1);
+        if (!row)
+            return NULL;
+        MSI_RecordSetStringW(row, 1, buffer);
+        msi_free(buffer);
+        return row;
+    }
+    else if (!strcmpW(name, szTime))
+    {
+        length = GetTimeFormatW(LOCALE_USER_DEFAULT, TIME_NOTIMEMARKER, NULL, NULL, NULL, 0);
+        if (!length)
+            return NULL;
+        buffer = msi_alloc(length * sizeof(WCHAR));
+        GetTimeFormatW(LOCALE_USER_DEFAULT, TIME_NOTIMEMARKER, NULL, NULL, buffer, sizeof(WCHAR));
+
+        row = MSI_CreateRecord(1);
+        if (!row)
+            return NULL;
+        MSI_RecordSetStringW(row, 1, buffer);
+        msi_free(buffer);
+        return row;
+    }
+
     rec = MSI_CreateRecord(1);
     if (!rec)
         return NULL;
-- 
2.7.4




More information about the wine-patches mailing list