diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2020-07-31 17:06:35 -0600 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2020-08-09 10:33:49 -0600 |
commit | d21eed76c48960707561c45c492c10a6a23c052e (patch) | |
tree | ebab09d099a699a24801fcfb4d7152cf82cc4a06 /src/engine/variable.cpp | |
parent | ad80d6dc10f9bd6cb6a084857a8fb546cc55e756 (diff) | |
download | wix-d21eed76c48960707561c45c492c10a6a23c052e.tar.gz wix-d21eed76c48960707561c45c492c10a6a23c052e.tar.bz2 wix-d21eed76c48960707561c45c492c10a6a23c052e.zip |
WIXFEAT:4763 Change "string" variable type to literal and add "formatted".
Diffstat (limited to 'src/engine/variable.cpp')
-rw-r--r-- | src/engine/variable.cpp | 102 |
1 files changed, 36 insertions, 66 deletions
diff --git a/src/engine/variable.cpp b/src/engine/variable.cpp index 6322942e..fb4b74e2 100644 --- a/src/engine/variable.cpp +++ b/src/engine/variable.cpp | |||
@@ -83,7 +83,6 @@ static HRESULT SetVariableValue( | |||
83 | __in BURN_VARIABLES* pVariables, | 83 | __in BURN_VARIABLES* pVariables, |
84 | __in_z LPCWSTR wzVariable, | 84 | __in_z LPCWSTR wzVariable, |
85 | __in BURN_VARIANT* pVariant, | 85 | __in BURN_VARIANT* pVariant, |
86 | __in BOOL fLiteral, | ||
87 | __in SET_VARIABLE setBuiltin, | 86 | __in SET_VARIABLE setBuiltin, |
88 | __in BOOL fLog | 87 | __in BOOL fLog |
89 | ); | 88 | ); |
@@ -335,14 +334,22 @@ extern "C" HRESULT VariablesParseFromXml( | |||
335 | { | 334 | { |
336 | ExitOnFailure(hr, "Failed to get @Value."); | 335 | ExitOnFailure(hr, "Failed to get @Value."); |
337 | 336 | ||
338 | hr = BVariantSetString(&value, scz, 0); | 337 | hr = BVariantSetString(&value, scz, 0, FALSE); |
339 | ExitOnFailure(hr, "Failed to set variant value."); | 338 | ExitOnFailure(hr, "Failed to set variant value."); |
340 | 339 | ||
341 | // @Type | 340 | // @Type |
342 | hr = XmlGetAttributeEx(pixnNode, L"Type", &scz); | 341 | hr = XmlGetAttributeEx(pixnNode, L"Type", &scz); |
343 | ExitOnFailure(hr, "Failed to get @Type."); | 342 | ExitOnFailure(hr, "Failed to get @Type."); |
344 | 343 | ||
345 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"numeric", -1)) | 344 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"formatted", -1)) |
345 | { | ||
346 | if (!fHidden) | ||
347 | { | ||
348 | LogStringLine(REPORT_STANDARD, "Initializing formatted variable '%ls' to value '%ls'", sczId, value.sczValue); | ||
349 | } | ||
350 | valueType = BURN_VARIANT_TYPE_FORMATTED; | ||
351 | } | ||
352 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"numeric", -1)) | ||
346 | { | 353 | { |
347 | if (!fHidden) | 354 | if (!fHidden) |
348 | { | 355 | { |
@@ -637,10 +644,7 @@ extern "C" HRESULT VariableGetFormatted( | |||
637 | } | 644 | } |
638 | ExitOnFailure(hr, "Failed to get variable: %ls", wzVariable); | 645 | ExitOnFailure(hr, "Failed to get variable: %ls", wzVariable); |
639 | 646 | ||
640 | // Strings need to get expanded unless they're built-in or literal because they're guaranteed not to have embedded variables. | 647 | if (BURN_VARIANT_TYPE_FORMATTED == pVariable->Value.Type) |
641 | if (BURN_VARIANT_TYPE_STRING == pVariable->Value.Type && | ||
642 | BURN_VARIABLE_INTERNAL_TYPE_NORMAL == pVariable->internalType && | ||
643 | !pVariable->fLiteral) | ||
644 | { | 648 | { |
645 | hr = BVariantGetString(&pVariable->Value, &scz); | 649 | hr = BVariantGetString(&pVariable->Value, &scz); |
646 | ExitOnFailure(hr, "Failed to get unformatted string."); | 650 | ExitOnFailure(hr, "Failed to get unformatted string."); |
@@ -674,39 +678,24 @@ extern "C" HRESULT VariableSetNumeric( | |||
674 | variant.llValue = llValue; | 678 | variant.llValue = llValue; |
675 | variant.Type = BURN_VARIANT_TYPE_NUMERIC; | 679 | variant.Type = BURN_VARIANT_TYPE_NUMERIC; |
676 | 680 | ||
677 | return SetVariableValue(pVariables, wzVariable, &variant, FALSE, fOverwriteBuiltIn ? SET_VARIABLE_OVERRIDE_BUILTIN : SET_VARIABLE_NOT_BUILTIN, TRUE); | 681 | return SetVariableValue(pVariables, wzVariable, &variant, fOverwriteBuiltIn ? SET_VARIABLE_OVERRIDE_BUILTIN : SET_VARIABLE_NOT_BUILTIN, TRUE); |
678 | } | ||
679 | |||
680 | extern "C" HRESULT VariableSetLiteralString( | ||
681 | __in BURN_VARIABLES* pVariables, | ||
682 | __in_z LPCWSTR wzVariable, | ||
683 | __in_z_opt LPCWSTR wzValue, | ||
684 | __in BOOL fOverwriteBuiltIn | ||
685 | ) | ||
686 | { | ||
687 | BURN_VARIANT variant = { }; | ||
688 | |||
689 | // We're not going to encrypt this value, so can access the value directly. | ||
690 | variant.sczValue = (LPWSTR)wzValue; | ||
691 | variant.Type = BURN_VARIANT_TYPE_STRING; | ||
692 | |||
693 | return SetVariableValue(pVariables, wzVariable, &variant, TRUE, fOverwriteBuiltIn ? SET_VARIABLE_OVERRIDE_BUILTIN : SET_VARIABLE_NOT_BUILTIN, TRUE); | ||
694 | } | 682 | } |
695 | 683 | ||
696 | extern "C" HRESULT VariableSetString( | 684 | extern "C" HRESULT VariableSetString( |
697 | __in BURN_VARIABLES* pVariables, | 685 | __in BURN_VARIABLES* pVariables, |
698 | __in_z LPCWSTR wzVariable, | 686 | __in_z LPCWSTR wzVariable, |
699 | __in_z_opt LPCWSTR wzValue, | 687 | __in_z_opt LPCWSTR wzValue, |
700 | __in BOOL fOverwriteBuiltIn | 688 | __in BOOL fOverwriteBuiltIn, |
689 | __in BOOL fFormatted | ||
701 | ) | 690 | ) |
702 | { | 691 | { |
703 | BURN_VARIANT variant = { }; | 692 | BURN_VARIANT variant = { }; |
704 | 693 | ||
705 | // We're not going to encrypt this value, so can access the value directly. | 694 | // We're not going to encrypt this value, so can access the value directly. |
706 | variant.sczValue = (LPWSTR)wzValue; | 695 | variant.sczValue = (LPWSTR)wzValue; |
707 | variant.Type = BURN_VARIANT_TYPE_STRING; | 696 | variant.Type = fFormatted ? BURN_VARIANT_TYPE_FORMATTED : BURN_VARIANT_TYPE_STRING; |
708 | 697 | ||
709 | return SetVariableValue(pVariables, wzVariable, &variant, FALSE, fOverwriteBuiltIn ? SET_VARIABLE_OVERRIDE_BUILTIN : SET_VARIABLE_NOT_BUILTIN, TRUE); | 698 | return SetVariableValue(pVariables, wzVariable, &variant, fOverwriteBuiltIn ? SET_VARIABLE_OVERRIDE_BUILTIN : SET_VARIABLE_NOT_BUILTIN, TRUE); |
710 | } | 699 | } |
711 | 700 | ||
712 | extern "C" HRESULT VariableSetVersion( | 701 | extern "C" HRESULT VariableSetVersion( |
@@ -722,16 +711,7 @@ extern "C" HRESULT VariableSetVersion( | |||
722 | variant.qwValue = qwValue; | 711 | variant.qwValue = qwValue; |
723 | variant.Type = BURN_VARIANT_TYPE_VERSION; | 712 | variant.Type = BURN_VARIANT_TYPE_VERSION; |
724 | 713 | ||
725 | return SetVariableValue(pVariables, wzVariable, &variant, FALSE, fOverwriteBuiltIn ? SET_VARIABLE_OVERRIDE_BUILTIN : SET_VARIABLE_NOT_BUILTIN, TRUE); | 714 | return SetVariableValue(pVariables, wzVariable, &variant, fOverwriteBuiltIn ? SET_VARIABLE_OVERRIDE_BUILTIN : SET_VARIABLE_NOT_BUILTIN, TRUE); |
726 | } | ||
727 | |||
728 | extern "C" HRESULT VariableSetLiteralVariant( | ||
729 | __in BURN_VARIABLES* pVariables, | ||
730 | __in_z LPCWSTR wzVariable, | ||
731 | __in BURN_VARIANT* pVariant | ||
732 | ) | ||
733 | { | ||
734 | return SetVariableValue(pVariables, wzVariable, pVariant, TRUE, SET_VARIABLE_NOT_BUILTIN, TRUE); | ||
735 | } | 715 | } |
736 | 716 | ||
737 | extern "C" HRESULT VariableSetVariant( | 717 | extern "C" HRESULT VariableSetVariant( |
@@ -740,7 +720,7 @@ extern "C" HRESULT VariableSetVariant( | |||
740 | __in BURN_VARIANT * pVariant | 720 | __in BURN_VARIANT * pVariant |
741 | ) | 721 | ) |
742 | { | 722 | { |
743 | return SetVariableValue(pVariables, wzVariable, pVariant, FALSE, SET_VARIABLE_NOT_BUILTIN, TRUE); | 723 | return SetVariableValue(pVariables, wzVariable, pVariant, SET_VARIABLE_NOT_BUILTIN, TRUE); |
744 | } | 724 | } |
745 | 725 | ||
746 | // The contents of psczOut may be sensitive, should keep encrypted and SecureZeroFree | 726 | // The contents of psczOut may be sensitive, should keep encrypted and SecureZeroFree |
@@ -888,6 +868,7 @@ extern "C" HRESULT VariableSerialize( | |||
888 | 868 | ||
889 | SecureZeroMemory(&qw, sizeof(qw)); | 869 | SecureZeroMemory(&qw, sizeof(qw)); |
890 | break; | 870 | break; |
871 | case BURN_VARIANT_TYPE_FORMATTED: __fallthrough; | ||
891 | case BURN_VARIANT_TYPE_STRING: | 872 | case BURN_VARIANT_TYPE_STRING: |
892 | hr = BVariantGetString(&pVariable->Value, &scz); | 873 | hr = BVariantGetString(&pVariable->Value, &scz); |
893 | ExitOnFailure(hr, "Failed to get string."); | 874 | ExitOnFailure(hr, "Failed to get string."); |
@@ -901,10 +882,6 @@ extern "C" HRESULT VariableSerialize( | |||
901 | hr = E_INVALIDARG; | 882 | hr = E_INVALIDARG; |
902 | ExitOnFailure(hr, "Unsupported variable type."); | 883 | ExitOnFailure(hr, "Unsupported variable type."); |
903 | } | 884 | } |
904 | |||
905 | // Write literal flag. | ||
906 | hr = BuffWriteNumber(ppbBuffer, piBuffer, (DWORD)pVariable->fLiteral); | ||
907 | ExitOnFailure(hr, "Failed to write literal flag."); | ||
908 | } | 885 | } |
909 | 886 | ||
910 | LExit: | 887 | LExit: |
@@ -928,7 +905,6 @@ extern "C" HRESULT VariableDeserialize( | |||
928 | DWORD cVariables = 0; | 905 | DWORD cVariables = 0; |
929 | LPWSTR sczName = NULL; | 906 | LPWSTR sczName = NULL; |
930 | BOOL fIncluded = FALSE; | 907 | BOOL fIncluded = FALSE; |
931 | BOOL fLiteral = FALSE; | ||
932 | BURN_VARIANT value = { }; | 908 | BURN_VARIANT value = { }; |
933 | LPWSTR scz = NULL; | 909 | LPWSTR scz = NULL; |
934 | DWORD64 qw = 0; | 910 | DWORD64 qw = 0; |
@@ -982,11 +958,12 @@ extern "C" HRESULT VariableDeserialize( | |||
982 | 958 | ||
983 | SecureZeroMemory(&qw, sizeof(qw)); | 959 | SecureZeroMemory(&qw, sizeof(qw)); |
984 | break; | 960 | break; |
961 | case BURN_VARIANT_TYPE_FORMATTED: __fallthrough; | ||
985 | case BURN_VARIANT_TYPE_STRING: | 962 | case BURN_VARIANT_TYPE_STRING: |
986 | hr = BuffReadString(pbBuffer, cbBuffer, piBuffer, &scz); | 963 | hr = BuffReadString(pbBuffer, cbBuffer, piBuffer, &scz); |
987 | ExitOnFailure(hr, "Failed to read variable value as string."); | 964 | ExitOnFailure(hr, "Failed to read variable value as string."); |
988 | 965 | ||
989 | hr = BVariantSetString(&value, scz, NULL); | 966 | hr = BVariantSetString(&value, scz, NULL, BURN_VARIANT_TYPE_FORMATTED == value.Type); |
990 | ExitOnFailure(hr, "Failed to set variable value."); | 967 | ExitOnFailure(hr, "Failed to set variable value."); |
991 | 968 | ||
992 | ReleaseNullStrSecure(scz); | 969 | ReleaseNullStrSecure(scz); |
@@ -996,12 +973,8 @@ extern "C" HRESULT VariableDeserialize( | |||
996 | ExitOnFailure(hr, "Unsupported variable type."); | 973 | ExitOnFailure(hr, "Unsupported variable type."); |
997 | } | 974 | } |
998 | 975 | ||
999 | // Read variable literal flag. | ||
1000 | hr = BuffReadNumber(pbBuffer, cbBuffer, piBuffer, (DWORD*)&fLiteral); | ||
1001 | ExitOnFailure(hr, "Failed to read variable literal flag."); | ||
1002 | |||
1003 | // Set variable. | 976 | // Set variable. |
1004 | hr = SetVariableValue(pVariables, sczName, &value, fLiteral, fWasPersisted ? SET_VARIABLE_OVERRIDE_PERSISTED_BUILTINS : SET_VARIABLE_ANY, FALSE); | 977 | hr = SetVariableValue(pVariables, sczName, &value, fWasPersisted ? SET_VARIABLE_OVERRIDE_PERSISTED_BUILTINS : SET_VARIABLE_ANY, FALSE); |
1005 | ExitOnFailure(hr, "Failed to set variable."); | 978 | ExitOnFailure(hr, "Failed to set variable."); |
1006 | 979 | ||
1007 | // Clean up. | 980 | // Clean up. |
@@ -1525,7 +1498,6 @@ static HRESULT SetVariableValue( | |||
1525 | __in BURN_VARIABLES* pVariables, | 1498 | __in BURN_VARIABLES* pVariables, |
1526 | __in_z LPCWSTR wzVariable, | 1499 | __in_z LPCWSTR wzVariable, |
1527 | __in BURN_VARIANT* pVariant, | 1500 | __in BURN_VARIANT* pVariant, |
1528 | __in BOOL fLiteral, | ||
1529 | __in SET_VARIABLE setBuiltin, | 1501 | __in SET_VARIABLE setBuiltin, |
1530 | __in BOOL fLog | 1502 | __in BOOL fLog |
1531 | ) | 1503 | ) |
@@ -1587,6 +1559,7 @@ static HRESULT SetVariableValue( | |||
1587 | LogStringLine(REPORT_STANDARD, "Setting numeric variable '%ls' to value %lld", wzVariable, pVariant->llValue); | 1559 | LogStringLine(REPORT_STANDARD, "Setting numeric variable '%ls' to value %lld", wzVariable, pVariant->llValue); |
1588 | break; | 1560 | break; |
1589 | 1561 | ||
1562 | case BURN_VARIANT_TYPE_FORMATTED: __fallthrough; | ||
1590 | case BURN_VARIANT_TYPE_STRING: | 1563 | case BURN_VARIANT_TYPE_STRING: |
1591 | if (!pVariant->sczValue) | 1564 | if (!pVariant->sczValue) |
1592 | { | 1565 | { |
@@ -1594,7 +1567,7 @@ static HRESULT SetVariableValue( | |||
1594 | } | 1567 | } |
1595 | else | 1568 | else |
1596 | { | 1569 | { |
1597 | LogStringLine(REPORT_STANDARD, "Setting string variable '%ls' to value '%ls'", wzVariable, pVariant->sczValue); | 1570 | LogStringLine(REPORT_STANDARD, "Setting %ls variable '%ls' to value '%ls'", BURN_VARIANT_TYPE_FORMATTED == pVariant->Type ? L"formatted" : L"string", wzVariable, pVariant->sczValue); |
1598 | } | 1571 | } |
1599 | break; | 1572 | break; |
1600 | 1573 | ||
@@ -1613,9 +1586,6 @@ static HRESULT SetVariableValue( | |||
1613 | hr = BVariantSetValue(&pVariables->rgVariables[iVariable].Value, pVariant); | 1586 | hr = BVariantSetValue(&pVariables->rgVariables[iVariable].Value, pVariant); |
1614 | ExitOnFailure(hr, "Failed to set value of variable: %ls", wzVariable); | 1587 | ExitOnFailure(hr, "Failed to set value of variable: %ls", wzVariable); |
1615 | 1588 | ||
1616 | // Update variable literal flag. | ||
1617 | pVariables->rgVariables[iVariable].fLiteral = fLiteral; | ||
1618 | |||
1619 | LExit: | 1589 | LExit: |
1620 | ::LeaveCriticalSection(&pVariables->csAccess); | 1590 | ::LeaveCriticalSection(&pVariables->csAccess); |
1621 | 1591 | ||
@@ -1827,7 +1797,7 @@ static HRESULT InitializeVariableComputerName( | |||
1827 | } | 1797 | } |
1828 | 1798 | ||
1829 | // set value | 1799 | // set value |
1830 | hr = BVariantSetString(pValue, wzComputerName, 0); | 1800 | hr = BVariantSetString(pValue, wzComputerName, 0, FALSE); |
1831 | ExitOnFailure(hr, "Failed to set variant value."); | 1801 | ExitOnFailure(hr, "Failed to set variant value."); |
1832 | 1802 | ||
1833 | LExit: | 1803 | LExit: |
@@ -1875,7 +1845,7 @@ static HRESULT InitializeVariableCsidlFolder( | |||
1875 | ExitOnRootFailure(hr, "Failed to get shell folder."); | 1845 | ExitOnRootFailure(hr, "Failed to get shell folder."); |
1876 | 1846 | ||
1877 | // set value | 1847 | // set value |
1878 | hr = BVariantSetString(pValue, sczPath, 0); | 1848 | hr = BVariantSetString(pValue, sczPath, 0, FALSE); |
1879 | ExitOnFailure(hr, "Failed to set variant value."); | 1849 | ExitOnFailure(hr, "Failed to set variant value."); |
1880 | 1850 | ||
1881 | LExit: | 1851 | LExit: |
@@ -1901,7 +1871,7 @@ static HRESULT InitializeVariableTempFolder( | |||
1901 | } | 1871 | } |
1902 | 1872 | ||
1903 | // set value | 1873 | // set value |
1904 | hr = BVariantSetString(pValue, wzPath, 0); | 1874 | hr = BVariantSetString(pValue, wzPath, 0, FALSE); |
1905 | ExitOnFailure(hr, "Failed to set variant value."); | 1875 | ExitOnFailure(hr, "Failed to set variant value."); |
1906 | 1876 | ||
1907 | LExit: | 1877 | LExit: |
@@ -1972,7 +1942,7 @@ static HRESULT InitializeVariableSystemFolder( | |||
1972 | } | 1942 | } |
1973 | 1943 | ||
1974 | // set value | 1944 | // set value |
1975 | hr = BVariantSetString(pValue, wzSystemFolder, 0); | 1945 | hr = BVariantSetString(pValue, wzSystemFolder, 0, FALSE); |
1976 | ExitOnFailure(hr, "Failed to set system folder variant value."); | 1946 | ExitOnFailure(hr, "Failed to set system folder variant value."); |
1977 | 1947 | ||
1978 | LExit: | 1948 | LExit: |
@@ -2003,7 +1973,7 @@ static HRESULT InitializeVariableWindowsVolumeFolder( | |||
2003 | } | 1973 | } |
2004 | 1974 | ||
2005 | // set value | 1975 | // set value |
2006 | hr = BVariantSetString(pValue, wzVolumePath, 0); | 1976 | hr = BVariantSetString(pValue, wzVolumePath, 0, FALSE); |
2007 | ExitOnFailure(hr, "Failed to set variant value."); | 1977 | ExitOnFailure(hr, "Failed to set variant value."); |
2008 | 1978 | ||
2009 | LExit: | 1979 | LExit: |
@@ -2130,7 +2100,7 @@ static HRESULT InitializeVariableString( | |||
2130 | LPCWSTR wzValue = (LPCWSTR)dwpData; | 2100 | LPCWSTR wzValue = (LPCWSTR)dwpData; |
2131 | 2101 | ||
2132 | // set value | 2102 | // set value |
2133 | hr = BVariantSetString(pValue, wzValue, 0); | 2103 | hr = BVariantSetString(pValue, wzValue, 0, FALSE); |
2134 | ExitOnFailure(hr, "Failed to set variant value."); | 2104 | ExitOnFailure(hr, "Failed to set variant value."); |
2135 | 2105 | ||
2136 | LExit: | 2106 | LExit: |
@@ -2176,7 +2146,7 @@ static HRESULT InitializeVariableRegistryFolder( | |||
2176 | ExitOnFailure(hr, "Failed to get 64-bit folder."); | 2146 | ExitOnFailure(hr, "Failed to get 64-bit folder."); |
2177 | 2147 | ||
2178 | // set value | 2148 | // set value |
2179 | hr = BVariantSetString(pValue, sczPath, 0); | 2149 | hr = BVariantSetString(pValue, sczPath, 0, FALSE); |
2180 | ExitOnFailure(hr, "Failed to set variant value."); | 2150 | ExitOnFailure(hr, "Failed to set variant value."); |
2181 | 2151 | ||
2182 | LExit: | 2152 | LExit: |
@@ -2212,7 +2182,7 @@ static HRESULT InitializeVariable6432Folder( | |||
2212 | } | 2182 | } |
2213 | 2183 | ||
2214 | // set value | 2184 | // set value |
2215 | hr = BVariantSetString(pValue, sczPath, 0); | 2185 | hr = BVariantSetString(pValue, sczPath, 0, FALSE); |
2216 | ExitOnFailure(hr, "Failed to set variant value."); | 2186 | ExitOnFailure(hr, "Failed to set variant value."); |
2217 | 2187 | ||
2218 | LExit: | 2188 | LExit: |
@@ -2249,7 +2219,7 @@ static HRESULT InitializeVariableDate( | |||
2249 | } | 2219 | } |
2250 | 2220 | ||
2251 | // set value | 2221 | // set value |
2252 | hr = BVariantSetString(pValue, sczDate, cchDate); | 2222 | hr = BVariantSetString(pValue, sczDate, cchDate, FALSE); |
2253 | ExitOnFailure(hr, "Failed to set variant value."); | 2223 | ExitOnFailure(hr, "Failed to set variant value."); |
2254 | 2224 | ||
2255 | LExit: | 2225 | LExit: |
@@ -2266,7 +2236,7 @@ static HRESULT InitializeVariableInstallerName( | |||
2266 | HRESULT hr = S_OK; | 2236 | HRESULT hr = S_OK; |
2267 | 2237 | ||
2268 | // set value | 2238 | // set value |
2269 | hr = BVariantSetString(pValue, L"WiX Burn", 0); | 2239 | hr = BVariantSetString(pValue, L"WiX Burn", 0, FALSE); |
2270 | ExitOnFailure(hr, "Failed to set variant value."); | 2240 | ExitOnFailure(hr, "Failed to set variant value."); |
2271 | 2241 | ||
2272 | LExit: | 2242 | LExit: |
@@ -2285,7 +2255,7 @@ static HRESULT InitializeVariableInstallerVersion( | |||
2285 | ExitOnFailure(hr, "Failed to copy the engine version."); | 2255 | ExitOnFailure(hr, "Failed to copy the engine version."); |
2286 | 2256 | ||
2287 | // set value | 2257 | // set value |
2288 | hr = BVariantSetString(pValue, sczVersion, 0); | 2258 | hr = BVariantSetString(pValue, sczVersion, 0, FALSE); |
2289 | ExitOnFailure(hr, "Failed to set variant value."); | 2259 | ExitOnFailure(hr, "Failed to set variant value."); |
2290 | 2260 | ||
2291 | LExit: | 2261 | LExit: |
@@ -2325,7 +2295,7 @@ static HRESULT InitializeVariableLogonUser( | |||
2325 | } | 2295 | } |
2326 | 2296 | ||
2327 | // set value | 2297 | // set value |
2328 | hr = BVariantSetString(pValue, wzUserName, 0); | 2298 | hr = BVariantSetString(pValue, wzUserName, 0, FALSE); |
2329 | ExitOnFailure(hr, "Failed to set variant value."); | 2299 | ExitOnFailure(hr, "Failed to set variant value."); |
2330 | 2300 | ||
2331 | LExit: | 2301 | LExit: |