Skip to content

Commit fb3ae0f

Browse files
authored
feat(WeaselSetup): detect 64-bit on single 32-bit build (#266)
* feat(WeaselSetup): detect 64-bit on single 32-bit build * fix(WeaselSetup): remove redundant backslash
1 parent 835df2b commit fb3ae0f

File tree

6 files changed

+66
-132
lines changed

6 files changed

+66
-132
lines changed

WeaselSetup/TSFRegister.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ BOOL RegisterServer(std::wstring filename, bool wow64)
198198
char achIMEKey[ARRAYSIZE(c_szInfoKeyPrefix) + CLSID_STRLEN];
199199
DWORD flags = KEY_WRITE;
200200
if (wow64) {
201-
flags |= KEY_WOW64_32KEY;
201+
flags |= KEY_WOW64_64KEY;
202202
}
203203
//TCHAR achFileName[MAX_PATH];
204204

WeaselSetup/WeaselSetup.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ static int CustomInstall(bool installing)
9494
return 1;
9595

9696
ret = RegCreateKeyEx(HKEY_CURRENT_USER, KEY,
97-
0, NULL, 0, KEY_ALL_ACCESS | KEY_WOW64_32KEY, 0, &hKey, NULL);
97+
0, NULL, 0, KEY_ALL_ACCESS, 0, &hKey, NULL);
9898
if (FAILED(HRESULT_FROM_WIN32(ret)))
9999
{
100100
MessageBox(NULL, KEY, L"安裝失敗", MB_ICONERROR | MB_OK);

WeaselSetup/WeaselSetup.vcxproj

Lines changed: 0 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,10 @@
55
<Configuration>Debug</Configuration>
66
<Platform>Win32</Platform>
77
</ProjectConfiguration>
8-
<ProjectConfiguration Include="Debug|x64">
9-
<Configuration>Debug</Configuration>
10-
<Platform>x64</Platform>
11-
</ProjectConfiguration>
128
<ProjectConfiguration Include="Release|Win32">
139
<Configuration>Release</Configuration>
1410
<Platform>Win32</Platform>
1511
</ProjectConfiguration>
16-
<ProjectConfiguration Include="Release|x64">
17-
<Configuration>Release</Configuration>
18-
<Platform>x64</Platform>
19-
</ProjectConfiguration>
2012
</ItemGroup>
2113
<PropertyGroup Label="Globals">
2214
<ProjectGuid>{04B795DB-A22B-4657-9350-29F04B8FB8F6}</ProjectGuid>
@@ -31,57 +23,30 @@
3123
<CharacterSet>Unicode</CharacterSet>
3224
<PlatformToolset>$(PLATFORM_TOOLSET)</PlatformToolset>
3325
</PropertyGroup>
34-
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
35-
<ConfigurationType>Application</ConfigurationType>
36-
<UseDebugLibraries>true</UseDebugLibraries>
37-
<CharacterSet>Unicode</CharacterSet>
38-
<PlatformToolset>$(PLATFORM_TOOLSET)</PlatformToolset>
39-
</PropertyGroup>
4026
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
4127
<ConfigurationType>Application</ConfigurationType>
4228
<UseDebugLibraries>false</UseDebugLibraries>
4329
<WholeProgramOptimization>true</WholeProgramOptimization>
4430
<CharacterSet>Unicode</CharacterSet>
4531
<PlatformToolset>$(PLATFORM_TOOLSET)</PlatformToolset>
4632
</PropertyGroup>
47-
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
48-
<ConfigurationType>Application</ConfigurationType>
49-
<UseDebugLibraries>false</UseDebugLibraries>
50-
<WholeProgramOptimization>true</WholeProgramOptimization>
51-
<CharacterSet>Unicode</CharacterSet>
52-
<PlatformToolset>$(PLATFORM_TOOLSET)</PlatformToolset>
53-
</PropertyGroup>
5433
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
5534
<ImportGroup Label="ExtensionSettings">
5635
</ImportGroup>
5736
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
5837
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
5938
</ImportGroup>
60-
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
61-
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
62-
</ImportGroup>
6339
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
6440
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
6541
</ImportGroup>
66-
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
67-
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
68-
</ImportGroup>
6942
<PropertyGroup Label="UserMacros" />
7043
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
7144
<LinkIncremental>true</LinkIncremental>
7245
</PropertyGroup>
73-
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
74-
<LinkIncremental>true</LinkIncremental>
75-
</PropertyGroup>
7646
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
7747
<LinkIncremental>false</LinkIncremental>
7848
<OutDir>$(SolutionDir)output\</OutDir>
7949
</PropertyGroup>
80-
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
81-
<LinkIncremental>false</LinkIncremental>
82-
<OutDir>$(SolutionDir)output\</OutDir>
83-
<TargetName>$(ProjectName)$(Platform)</TargetName>
84-
</PropertyGroup>
8550
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
8651
<ClCompile>
8752
<PrecompiledHeader>Use</PrecompiledHeader>
@@ -99,23 +64,6 @@
9964
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
10065
</Link>
10166
</ItemDefinitionGroup>
102-
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
103-
<ClCompile>
104-
<PrecompiledHeader>Use</PrecompiledHeader>
105-
<WarningLevel>Level3</WarningLevel>
106-
<Optimization>Disabled</Optimization>
107-
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
108-
<AdditionalIncludeDirectories>$(SolutionDir)\include;$(BOOST_ROOT)</AdditionalIncludeDirectories>
109-
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
110-
<AdditionalOptions>/Zc:threadSafeInit- %(AdditionalOptions)</AdditionalOptions>
111-
</ClCompile>
112-
<Link>
113-
<SubSystem>Windows</SubSystem>
114-
<GenerateDebugInformation>true</GenerateDebugInformation>
115-
<AdditionalLibraryDirectories>$(SolutionDir)\lib;$(BOOST_ROOT)\stage\lib</AdditionalLibraryDirectories>
116-
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
117-
</Link>
118-
</ItemDefinitionGroup>
11967
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
12068
<ClCompile>
12169
<WarningLevel>Level3</WarningLevel>
@@ -139,29 +87,6 @@
13987
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
14088
</Link>
14189
</ItemDefinitionGroup>
142-
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
143-
<ClCompile>
144-
<WarningLevel>Level3</WarningLevel>
145-
<PrecompiledHeader>Use</PrecompiledHeader>
146-
<Optimization>MaxSpeed</Optimization>
147-
<FunctionLevelLinking>true</FunctionLevelLinking>
148-
<IntrinsicFunctions>true</IntrinsicFunctions>
149-
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
150-
<AdditionalIncludeDirectories>$(SolutionDir)\include;$(BOOST_ROOT)</AdditionalIncludeDirectories>
151-
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
152-
<AdditionalOptions>/Zc:threadSafeInit- %(AdditionalOptions)</AdditionalOptions>
153-
</ClCompile>
154-
<Link>
155-
<SubSystem>Windows</SubSystem>
156-
<GenerateDebugInformation>true</GenerateDebugInformation>
157-
<EnableCOMDATFolding>true</EnableCOMDATFolding>
158-
<OptimizeReferences>true</OptimizeReferences>
159-
<AdditionalLibraryDirectories>$(SolutionDir)\lib;$(BOOST_ROOT)\stage_x64\lib</AdditionalLibraryDirectories>
160-
<AdditionalDependencies>imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
161-
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
162-
<OutputFile>$(SolutionDir)output\$(ProjectName)$(Platform)$(TargetExt)</OutputFile>
163-
</Link>
164-
</ItemDefinitionGroup>
16590
<ItemGroup>
16691
<None Include="ReadMe.txt" />
16792
<None Include="small.ico" />
@@ -180,9 +105,7 @@
180105
<ClCompile Include="InstallOptionsDialog.cpp" />
181106
<ClCompile Include="stdafx.cpp">
182107
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
183-
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
184108
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
185-
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
186109
</ClCompile>
187110
<ClCompile Include="TSFRegister.cpp" />
188111
<ClCompile Include="WeaselSetup.cpp" />

WeaselSetup/imesetup.cpp

Lines changed: 58 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -54,50 +54,67 @@ BOOL delete_file(const std::wstring& file)
5454
return ret;
5555
}
5656

57+
BOOL is_wow64()
58+
{
59+
DWORD errorCode;
60+
if (GetSystemWow64DirectoryW(NULL, 0) == 0)
61+
if ((errorCode = GetLastError()) == ERROR_CALL_NOT_IMPLEMENTED)
62+
return FALSE;
63+
else
64+
ExitProcess((UINT)errorCode);
65+
else
66+
return TRUE;
67+
}
68+
69+
typedef BOOL (WINAPI *PW64DW64FR)(PVOID *);
70+
typedef BOOL (WINAPI *PW64RW64FR)(PVOID);
5771
typedef int (*ime_register_func)(const std::wstring& ime_path, bool register_ime, bool is_wow64, bool hant, bool silent);
5872

5973
int install_ime_file(std::wstring& srcPath, const std::wstring& ext, bool hant, bool silent, ime_register_func func)
6074
{
61-
std::wstring destPath;
62-
std::wstring wow64Path;
63-
6475
WCHAR path[MAX_PATH];
65-
GetModuleFileName(GetModuleHandle(NULL), path, _countof(path));
76+
GetModuleFileNameW(GetModuleHandle(NULL), path, _countof(path));
6677

67-
bool is_x64 = (sizeof(HANDLE) == 8);
6878
std::wstring srcFileName = (hant ? L"weaselt" : L"weasel");
69-
srcFileName += (is_x64 ? L"x64" + ext : ext);
79+
srcFileName += ext;
7080
WCHAR drive[_MAX_DRIVE];
7181
WCHAR dir[_MAX_DIR];
7282
_wsplitpath_s(path, drive, _countof(drive), dir, _countof(dir), NULL, 0, NULL, 0);
73-
srcPath = std::wstring(drive) + dir + L'\\' + srcFileName;
83+
srcPath = std::wstring(drive) + dir + srcFileName;
7484

75-
GetSystemDirectory(path, _countof(path));
76-
destPath = std::wstring(path) + L"\\weasel" + ext;
77-
78-
if (GetSystemWow64Directory(path, _countof(path)))
79-
{
80-
wow64Path = std::wstring(path) + L"\\weasel" + ext;
81-
}
85+
GetSystemDirectoryW(path, _countof(path));
86+
std::wstring destPath = std::wstring(path) + L"\\weasel" + ext;
8287

8388
int retval = 0;
8489
// 复制 .dll/.ime 到系统目录
8590
if (!copy_file(srcPath, destPath))
8691
{
87-
if (!silent) MessageBox(NULL, destPath.c_str(), L"安裝失敗", MB_ICONERROR | MB_OK);
92+
if (!silent) MessageBoxW(NULL, destPath.c_str(), L"安裝失敗", MB_ICONERROR | MB_OK);
8893
return 1;
8994
}
9095
retval += func(destPath, true, false, hant, silent);
91-
if (!wow64Path.empty())
96+
if (is_wow64())
9297
{
93-
std::wstring x86 = srcPath;
94-
ireplace_last(x86, L"x64" + ext, ext);
95-
if (!copy_file(x86, wow64Path))
98+
ireplace_last(srcPath, ext, L"x64" + ext);
99+
PVOID OldValue = NULL;
100+
PW64DW64FR fnWow64DisableWow64FsRedirection = (PW64DW64FR)GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "Wow64DisableWow64FsRedirection");
101+
PW64RW64FR fnWow64RevertWow64FsRedirection = (PW64RW64FR)GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "Wow64RevertWow64FsRedirection");
102+
if (fnWow64DisableWow64FsRedirection == NULL || fnWow64DisableWow64FsRedirection(&OldValue) == FALSE)
103+
{
104+
if (!silent) MessageBoxW(NULL, L"無法取消文件系統重定向", L"安裝失敗", MB_ICONERROR | MB_OK);
105+
return 1;
106+
}
107+
if (!copy_file(srcPath, destPath))
96108
{
97-
if (!silent) MessageBox(NULL, wow64Path.c_str(), L"安裝失敗", MB_ICONERROR | MB_OK);
109+
if (!silent) MessageBoxW(NULL, destPath.c_str(), L"安裝失敗", MB_ICONERROR | MB_OK);
98110
return 1;
99111
}
100-
retval += func(wow64Path, true, true, hant, silent);
112+
if (fnWow64RevertWow64FsRedirection == NULL || fnWow64RevertWow64FsRedirection(OldValue) == FALSE)
113+
{
114+
if (!silent) MessageBoxW(NULL, L"無法恢復文件系統重定向", L"安裝失敗", MB_ICONERROR | MB_OK);
115+
return 1;
116+
}
117+
retval += func(destPath, true, true, hant, silent);
101118
}
102119
return retval;
103120
}
@@ -106,7 +123,7 @@ int uninstall_ime_file(const std::wstring& ext, bool silent, ime_register_func f
106123
{
107124
int retval = 0;
108125
WCHAR path[MAX_PATH];
109-
GetSystemDirectory(path, _countof(path));
126+
GetSystemDirectoryW(path, _countof(path));
110127
std::wstring imePath(path);
111128
imePath += L"\\weasel" + ext;
112129
retval += func(imePath, false, false, false, silent);
@@ -115,16 +132,27 @@ int uninstall_ime_file(const std::wstring& ext, bool silent, ime_register_func f
115132
if (!silent) MessageBox(NULL, imePath.c_str(), L"卸載失敗", MB_ICONERROR | MB_OK);
116133
retval += 1;
117134
}
118-
if (GetSystemWow64Directory(path, _countof(path)))
135+
if (is_wow64())
119136
{
120-
std::wstring wow64Path(path);
121-
wow64Path += L"\\weasel" + ext;
122-
retval += func(wow64Path, false, true, false, silent);
123-
if (!delete_file(wow64Path))
137+
retval += func(imePath, false, true, false, silent);
138+
PVOID OldValue = NULL;
139+
PW64DW64FR fnWow64DisableWow64FsRedirection = (PW64DW64FR)GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "Wow64DisableWow64FsRedirection");
140+
PW64RW64FR fnWow64RevertWow64FsRedirection = (PW64RW64FR)GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "Wow64RevertWow64FsRedirection");
141+
if (fnWow64DisableWow64FsRedirection == NULL || fnWow64DisableWow64FsRedirection(&OldValue) == FALSE)
142+
{
143+
if (!silent) MessageBoxW(NULL, L"無法取消文件系統重定向", L"卸載失敗", MB_ICONERROR | MB_OK);
144+
return 1;
145+
}
146+
if (!delete_file(imePath))
124147
{
125-
if (!silent) MessageBox(NULL, wow64Path.c_str(), L"卸載失敗", MB_ICONERROR | MB_OK);
148+
if (!silent) MessageBoxW(NULL, imePath.c_str(), L"卸載失敗", MB_ICONERROR | MB_OK);
126149
retval += 1;
127150
}
151+
if (fnWow64RevertWow64FsRedirection == NULL || fnWow64RevertWow64FsRedirection(OldValue) == FALSE)
152+
{
153+
if (!silent) MessageBoxW(NULL, L"無法恢復文件系統重定向", L"卸載失敗", MB_ICONERROR | MB_OK);
154+
return 1;
155+
}
128156
}
129157
return retval;
130158
}
@@ -378,7 +406,7 @@ int install(bool hant, bool silent)
378406
// 写注册表
379407
HKEY hKey;
380408
LSTATUS ret = RegCreateKeyEx(HKEY_LOCAL_MACHINE, WEASEL_REG_KEY,
381-
0, NULL, 0, KEY_ALL_ACCESS | KEY_WOW64_32KEY, 0, &hKey, NULL);
409+
0, NULL, 0, KEY_ALL_ACCESS, 0, &hKey, NULL);
382410
if (FAILED(HRESULT_FROM_WIN32(ret)))
383411
{
384412
if (!silent) MessageBox(NULL, WEASEL_REG_KEY, L"安裝失敗", MB_ICONERROR | MB_OK);
@@ -389,6 +417,7 @@ int install(bool hant, bool silent)
389417
WCHAR dir[_MAX_DIR];
390418
_wsplitpath_s(ime_src_path.c_str(), drive, _countof(drive), dir, _countof(dir), NULL, 0, NULL, 0);
391419
std::wstring rootDir = std::wstring(drive) + dir;
420+
rootDir.pop_back();
392421
ret = RegSetValueEx(hKey, L"WeaselRoot", 0, REG_SZ,
393422
(const BYTE*)rootDir.c_str(),
394423
(rootDir.length() + 1) * sizeof(WCHAR));

output/install.nsi

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,7 @@ program_files:
140140
${EndIf}
141141
File "WeaselDeployer.exe"
142142
File "WeaselServer.exe"
143-
${If} ${RunningX64}
144-
File "WeaselSetupx64.exe"
145-
${Else}
146-
File "WeaselSetup.exe"
147-
${EndIf}
143+
File "WeaselSetup.exe"
148144
File "rime.dll"
149145
File "WinSparkle.dll"
150146
; shared data files
@@ -176,11 +172,7 @@ program_files:
176172
IfErrors +2 0
177173
StrCpy $R2 "/t"
178174

179-
${If} ${RunningX64}
180-
ExecWait '"$INSTDIR\WeaselSetupx64.exe" $R2'
181-
${Else}
182-
ExecWait '"$INSTDIR\WeaselSetup.exe" $R2'
183-
${EndIf}
175+
ExecWait '"$INSTDIR\WeaselSetup.exe" $R2'
184176

185177
; run as user...
186178
ExecWait "$INSTDIR\WeaselDeployer.exe /install"
@@ -216,11 +208,7 @@ Section "Start Menu Shortcuts"
216208
CreateShortCut "$SMPROGRAMS\小狼毫輸入法\【小狼毫】用戶文件夾.lnk" "$INSTDIR\WeaselServer.exe" "/userdir" "$SYSDIR\shell32.dll" 126
217209
CreateShortCut "$SMPROGRAMS\小狼毫輸入法\【小狼毫】程序文件夾.lnk" "$INSTDIR\WeaselServer.exe" "/weaseldir" "$SYSDIR\shell32.dll" 19
218210
CreateShortCut "$SMPROGRAMS\小狼毫輸入法\【小狼毫】檢查新版本.lnk" "$INSTDIR\WeaselServer.exe" "/update" "$SYSDIR\shell32.dll" 13
219-
${If} ${RunningX64}
220-
CreateShortCut "$SMPROGRAMS\小狼毫輸入法\【小狼毫】安裝選項.lnk" "$INSTDIR\WeaselSetupx64.exe" "" "$SYSDIR\shell32.dll" 162
221-
${Else}
222-
CreateShortCut "$SMPROGRAMS\小狼毫輸入法\【小狼毫】安裝選項.lnk" "$INSTDIR\WeaselSetup.exe" "" "$SYSDIR\shell32.dll" 162
223-
${EndIf}
211+
CreateShortCut "$SMPROGRAMS\小狼毫輸入法\【小狼毫】安裝選項.lnk" "$INSTDIR\WeaselSetup.exe" "" "$SYSDIR\shell32.dll" 162
224212
CreateShortCut "$SMPROGRAMS\小狼毫輸入法\卸載小狼毫.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
225213

226214
SectionEnd
@@ -233,11 +221,7 @@ Section "Uninstall"
233221

234222
ExecWait '"$INSTDIR\WeaselServer.exe" /quit'
235223

236-
${If} ${RunningX64}
237-
ExecWait '"$INSTDIR\WeaselSetupx64.exe" /u'
238-
${Else}
239-
ExecWait '"$INSTDIR\WeaselSetup.exe" /u'
240-
${EndIf}
224+
ExecWait '"$INSTDIR\WeaselSetup.exe" /u'
241225

242226
; Remove registry keys
243227
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Weasel"

weasel.sln

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,10 @@ Global
167167
{F53F3E9C-CC4D-4D1D-9C2E-719FE60A7E6B}.ReleaseHant|x64.ActiveCfg = Release|Win32
168168
{04B795DB-A22B-4657-9350-29F04B8FB8F6}.Debug|Win32.ActiveCfg = Debug|Win32
169169
{04B795DB-A22B-4657-9350-29F04B8FB8F6}.Debug|Win32.Build.0 = Debug|Win32
170-
{04B795DB-A22B-4657-9350-29F04B8FB8F6}.Debug|x64.ActiveCfg = Debug|x64
171-
{04B795DB-A22B-4657-9350-29F04B8FB8F6}.Debug|x64.Build.0 = Debug|x64
170+
{04B795DB-A22B-4657-9350-29F04B8FB8F6}.Debug|x64.ActiveCfg = Debug|Win32
172171
{04B795DB-A22B-4657-9350-29F04B8FB8F6}.Release|Win32.ActiveCfg = Release|Win32
173172
{04B795DB-A22B-4657-9350-29F04B8FB8F6}.Release|Win32.Build.0 = Release|Win32
174-
{04B795DB-A22B-4657-9350-29F04B8FB8F6}.Release|x64.ActiveCfg = Release|x64
175-
{04B795DB-A22B-4657-9350-29F04B8FB8F6}.Release|x64.Build.0 = Release|x64
173+
{04B795DB-A22B-4657-9350-29F04B8FB8F6}.Release|x64.ActiveCfg = Release|Win32
176174
{04B795DB-A22B-4657-9350-29F04B8FB8F6}.ReleaseHant|Win32.ActiveCfg = Release|Win32
177175
{04B795DB-A22B-4657-9350-29F04B8FB8F6}.ReleaseHant|Win32.Build.0 = Release|Win32
178176
{04B795DB-A22B-4657-9350-29F04B8FB8F6}.ReleaseHant|x64.ActiveCfg = Release|Win32

0 commit comments

Comments
 (0)