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: |
