Changeset 308b6f5 in nscp
- Timestamp:
- 09/06/09 13:40:04 (4 years ago)
- Branches:
- master, 0.4.0, 0.4.1, 0.4.2, stable
- Children:
- e7dbac9
- Parents:
- 89537bd
- Files:
-
- 12 edited
-
AutoBuild.h (modified) (1 diff)
-
Jamroot (modified) (1 diff)
-
NSClient++.cpp (modified) (1 diff)
-
env.bat (modified) (9 diffs)
-
helpers/installer/Product.wxs (modified) (2 diffs)
-
helpers/installer_dll/installer_helper.hpp (modified) (5 diffs)
-
helpers/installer_dll/main_dll.cpp (modified) (3 diffs)
-
helpers/installer_dll/main_dll.def (modified) (1 diff)
-
helpers/installer_dll_fw/Jamfile (modified) (1 diff)
-
modules/CheckTaskSched/Jamfile (modified) (1 diff)
-
modules/CheckWMI/Jamfile (modified) (1 diff)
-
release-build.bat (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
AutoBuild.h
r358cda1 r308b6f5 3 3 // change the FALSE to TRUE for autoincrement of build number 4 4 #define INCREMENT_VERSION TRUE 5 #define FILEVER 0,3,7,2 286 #define PRODUCTVER 0,3,7,2 287 #define STRFILEVER _T("0.3.7.2 28")8 #define STRPRODUCTVER _T("0.3.7.2 28")9 #define STRPRODUCTDATE _T("2009-0 8-30")5 #define FILEVER 0,3,7,257 6 #define PRODUCTVER 0,3,7,257 7 #define STRFILEVER _T("0.3.7.257") 8 #define STRPRODUCTVER _T("0.3.7.257") 9 #define STRPRODUCTDATE _T("2009-09-06") 10 10 #endif // AUTOBUILD_H -
Jamroot
r358cda1 r308b6f5 94 94 actions update_version 95 95 { 96 D:\source\tools\XAutobuild.exe -f $(TOP)96 XAutobuild.exe -f $(TOP) 97 97 } 98 98 } -
NSClient++.cpp
r358cda1 r308b6f5 1202 1202 std::cout << k << " " << strEx::wstring_to_string(file_stl) << "(" << line << ") " << strEx::wstring_to_string(message) << std::endl; 1203 1203 } 1204 if ( messageHandlers_.size() == 0 &&!plugins_loaded_) {1204 if (!plugins_loaded_) { 1205 1205 OutputDebugString(message.c_str()); 1206 1206 log_cache_.push_back(cached_log_entry(msgType, file, line, message)); -
env.bat
r358cda1 r308b6f5 4 4 rem # Set the path to the boost build jam binary 5 5 rem # 6 remSET jam=C:\src\tools\boost-jam-3.1.17\bin.ntx86\bjam.exe7 SET jam=D:\source\tools\bjam.exe6 SET jam=C:\src\tools\boost-jam-3.1.17\bin.ntx86\bjam.exe 7 rem SET jam=D:\source\tools\bjam.exe 8 8 rem # 9 9 rem ######################## … … 12 12 rem # 13 13 rem SET BOOST_BUILD_PATH=D:\tools\boost-build 14 remSET BOOST_BUILD_PATH=C:\src\lib-src\boost_1_39_0\tools\build\v215 SETBOOST_BUILD_PATH=D:\source\boost-build14 SET BOOST_BUILD_PATH=C:\src\lib-src\boost_1_39_0\tools\build\v2 15 rem BOOST_BUILD_PATH=D:\source\boost-build 16 16 rem # 17 17 rem ######################## … … 19 19 rem # Set the path to your extra include directpy (openssl/boost/*) 20 20 rem # 21 rem SET include=C:\src\include22 set TARGET_INC_DIR=d:\source\include23 setNSCP_INCLUDE=%TARGET_INC_DIR%21 SET TARGET_INC_DIR=C:\src\include 22 rem set TARGET_INC_DIR=d:\source\include 23 SET NSCP_INCLUDE=%TARGET_INC_DIR% 24 24 rem # 25 25 rem ######################## … … 27 27 rem # Set the path to your extra library directory (openssl/boost/*) 28 28 rem # 29 remSET TARGET_LIB_DIR=c:\src\lib30 SET TARGET_LIB_DIR=D:\source\lib29 SET TARGET_LIB_DIR=c:\src\lib 30 rem SET TARGET_LIB_DIR=D:\source\lib 31 31 rem # 32 32 rem # Setup various relative paths (might need to tweak) … … 40 40 rem # Set the path to your Lua sources 41 41 rem # 42 set LUA_SOURCE=D:\source\NSCP-stable\lib-source\LUA\src\lua-5.1.2 42 rem set LUA_SOURCE=D:\source\NSCP-stable\lib-source\LUA\src\lua-5.1.2 43 set LUA_SOURCE=C:\src\lib-src\lua-5.1.4 43 44 rem # 44 45 rem ######################## … … 46 47 rem # Set the path to your Platform SDK 47 48 rem # 48 SET PLATTFORM_SDK=D:\Program\Microsoft Platform SDK for Windows Server 2003 R2 49 rem SET PLATTFORM_SDK=D:\Program\Microsoft Platform SDK for Windows Server 2003 R2 50 SET PLATTFORM_SDK=c:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2 49 51 rem # 50 52 rem # Setup various relative paths (might need to tweak) … … 60 62 rem # Set the path to your WiX installation 61 63 rem # 62 set WIX_PATH=D:\Program\Windows Installer XML64 SET WIX_PATH=C:\Program Files\Windows Installer XML 63 65 rem # 64 66 rem ######################## … … 66 68 rem # Set the path to your Crypt++ sources 67 69 rem # 68 set CRYPTOPP_SOURCE=D:\source\libs-c\crypto++-5.6.0 70 rem SET CRYPTOPP_SOURCE=D:\source\libs-c\crypto++-5.6.0 71 SET CRYPTOPP_SOURCE="C:\src\lib-src\Crypto++5.6.0" 69 72 rem ######################## 70 73 rem # … … 72 75 rem # 73 76 74 SET TOOLS_DIR= d:\src\tools\;%ProgramFiles%\7-Zip\77 SET TOOLS_DIR=c:\src\tools\;%ProgramFiles%\7-Zip\ 75 78 76 79 -
helpers/installer/Product.wxs
r358cda1 r308b6f5 279 279 280 280 <CustomAction Id='ReadOldConfig' BinaryKey='InstallerHelper' DllEntry='ImportConfig' Impersonate='no' /> 281 <CustomAction Id='WriteNewConfig' BinaryKey='InstallerHelper' DllEntry='UpdateConfig' Impersonate='no' /> 282 283 <CustomAction Id='NeedUninstall' BinaryKey='InstallerHelper' DllEntry='NeedUninstall' Impersonate='no' /> 281 <CustomAction Id='ScheduleWriteConfig' BinaryKey='InstallerHelper' DllEntry='ScheduleWriteConfig' Impersonate='no' /> 282 <CustomAction Id="ExecWriteConfig" BinaryKey="InstallerHelper" DllEntry="ExecWriteConfig" Execute="deferred" Impersonate="no" Return="check" /> 283 284 <CustomAction Id='NeedUninstall' BinaryKey='InstallerHelper' DllEntry='NeedUninstall' Impersonate='no' /> 284 285 285 286 … … 310 311 <RemoveExistingProducts After='InstallInitialize'/> 311 312 <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWAPPFOUND</Custom> 312 313 <Custom Action="SchedServiceInstall" After="InstallFiles" />313 <Custom Action="ScheduleWriteConfig" After='InstallFiles' /> 314 <Custom Action="SchedServiceInstall" After="InstallFiles" /> 314 315 <Custom Action="SchedServiceUnInstall" Before="RemoveFiles" /> 315 316 <Custom Action="StopAllServices" Before="InstallValidate" /> 316 317 317 318 <Custom Action="WixSchedFirewallExceptionsUninstall" Before="RemoveFiles"> 318 319 <![CDATA[ VersionNT >= 501 AND (ServicePackLevel >= 2 OR VersionNT >= 600) ]]> -
helpers/installer_dll/installer_helper.hpp
r358cda1 r308b6f5 524 524 return strEx::stoi(get_next_string()); 525 525 } 526 std::list<std::wstring> get_next_list() { 527 std::list<std::wstring> list; 528 unsigned int count = get_next_int(); 529 for (unsigned int i=0;i<count;++i) { 530 list.push_back(get_next_string()); 531 } 532 return list; 533 } 534 526 535 std::wstring to_string() { 527 536 std::wstring str; … … 541 550 ~custom_action_data_w() {} 542 551 552 void insert_string(std::wstring str) { 553 WCHAR delim[] = {MAGIC_MULTISZ_DELIM, 0}; // magic char followed by NULL terminator 554 if (!buf_.empty()) 555 buf_ = str + delim + buf_ ; 556 else 557 buf_ = str; 558 } 559 void insert_int(int i) { 560 insert_string(strEx::itos(i)); 561 } 543 562 void write_string(std::wstring str) { 544 563 WCHAR delim[] = {MAGIC_MULTISZ_DELIM, 0}; // magic char followed by NULL terminator … … 550 569 write_string(strEx::itos(i)); 551 570 } 571 void write_list(std::list<std::wstring> list) { 572 write_int(list.size()); 573 for (std::list<std::wstring>::const_iterator cit = list.begin(); cit != list.end(); ++cit) { 574 write_string(*cit); 575 } 576 } 552 577 std::wstring to_string() const { 553 578 return buf_; //return std::wstring(data_); 554 579 } 555 boolean has_data( ) const {556 return used_size() > 0;580 boolean has_data(const int size = 0) const { 581 return used_size() > size; 557 582 } 558 583 operator const TCHAR* () const { … … 591 616 return S_OK; 592 617 } 593 /*618 /* 594 619 std::wstring get_target_for_file(std::wstring file) { 595 596 620 // turn that into the path to the target file 597 621 hr = StrAllocFormatted(&pwzFormattedFile, L"[#%s]", pwzFileId); … … 608 632 ExitOnFailure(hr, "failed to get game component id"); 609 633 } 610 611 */ 634 */ 635 612 636 std::list<std::wstring> enumProducts() { 613 637 WCHAR buffer[40]; -
helpers/installer_dll/main_dll.cpp
r358cda1 r308b6f5 175 175 176 176 } 177 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 177 178 178 179 //#pragma comment(linker, "/EXPORT:ImportConfig=_ImportConfig@4") … … 316 317 } 317 318 318 inline void write_string_item_if_changed(msi_helper &h, std::wstring property, std::wstring path, std::wstring key) { 319 if (h.isChangedProperyAndOld(property)) 320 Settings::getInstance()->setString(path, key, h.getPropery(property)); 321 else 319 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 320 bool write_config(msi_helper &h, std::wstring path, std::wstring file); 321 322 extern "C" UINT __stdcall ScheduleWriteConfig (MSIHANDLE hInstall) { 323 msi_helper h(hInstall, _T("ScheduleWriteConfig")); 324 try { 325 std::wstring target = h.getTargetPath(_T("INSTALLLOCATION")); 326 std::wstring main_conf = h.getPropery(_T("MAIN_CONFIGURATION_FILE")); 327 std::wstring custom_conf = h.getPropery(_T("CUSTOM_CONFIGURATION_FILE")); 328 329 std::wstring write = target + _T("\\") + custom_conf; 330 h.logMessage(_T("config file (update): ") + write); 331 332 if (h.getPropery(_T("CONF_CAN_WRITE")) == _T("1")) { 333 if (h.getPropery(_T("KEEP_WHICH_CONFIG")) == _T("OLD")) { 334 CopyFile((target + _T("\\nsc.ini")).c_str(), (target + _T("\\nsc.new")).c_str(), FALSE); 335 CopyFile((h.getTempPath() + _T("\\old_nsc.ini")).c_str(), (target + _T("\\nsc.ini")).c_str(), FALSE); 336 } else { 337 CopyFile((h.getTempPath() + _T("\\old_nsc.ini")).c_str(), (target + _T("\\nsc.old")).c_str(), FALSE); 338 } 339 } 340 if (h.getPropery(_T("KEEP_WHICH_CONFIG")) == _T("NEW")) { 341 if (!write_config(h, target, custom_conf)) { 342 h.logMessage(_T("Failed to write configuration")); 343 return ERROR_INSTALL_FAILURE; 344 } 345 } 346 } catch (installer_exception e) { 347 h.errorMessage(_T("Failed to install service: ") + e.what()); 348 return ERROR_INSTALL_FAILURE; 349 } catch (...) { 350 h.errorMessage(_T("Failed to install service: <UNKNOWN EXCEPTION>")); 351 return ERROR_INSTALL_FAILURE; 352 } 353 return ERROR_SUCCESS; 354 } 355 extern "C" UINT __stdcall ExecWriteConfig (MSIHANDLE hInstall) { 356 msi_helper h(hInstall, _T("ExecWriteConfig")); 357 try { 358 h.logMessage(_T("RAW: ") + h.getPropery(L"CustomActionData")); 359 msi_helper::custom_action_data_r data(h.getPropery(L"CustomActionData")); 360 h.logMessage(_T("Got CA data: ") + data.to_string()); 361 std::wstring path = data.get_next_string(); 362 std::wstring file = data.get_next_string(); 363 Settings::getInstance()->setFile(path, file, true); 364 365 while (data.has_more()) { 366 unsigned int mode = data.get_next_int(); 367 if (mode == 1) { 368 // loop through all the passed in data 369 std::wstring path = data.get_next_string(); 370 std::wstring key = data.get_next_string(); 371 std::wstring prop = data.get_next_string(); 372 h.logMessage(_T("Writing to config file: ") + path + _T("/") + key + _T(" = ") + prop); 373 Settings::getInstance()->setString(path, key, prop); 374 //TODO write config 375 } else if (mode == 2) { 376 std::list<std::wstring> list = data.get_next_list(); 377 h.logMessage(_T("Writing modules section: ") + strEx::itos(list.size())); 378 Settings::getInstance()->writeSection(_T("modules"), list); 379 } else { 380 h.errorMessage(_T("Unknown mode in CA data: ") + strEx::itos(mode) + _T(": ") + data.to_string()); 381 return ERROR_INSTALL_FAILURE; 382 } 383 } 384 Settings::getInstance()->write(); 385 } catch (SettingsException e) { 386 h.errorMessage(_T("Failed to write configuration file: ") + e.getMessage()); 387 return ERROR_SUCCESS; 388 } catch (installer_exception e) { 389 h.errorMessage(_T("Failed to install service: ") + e.what()); 390 return ERROR_INSTALL_FAILURE; 391 } catch (...) { 392 h.errorMessage(_T("Failed to install service: <UNKNOWN EXCEPTION>")); 393 return ERROR_INSTALL_FAILURE; 394 } 395 return ERROR_SUCCESS; 396 } 397 398 inline void write_string_item_if_changed(msi_helper &h, msi_helper::custom_action_data_w &data, std::wstring property, std::wstring path, std::wstring key) { 399 if (h.isChangedProperyAndOld(property)) { 400 data.write_int(1); 401 data.write_string(path); 402 data.write_string(key); 403 data.write_string(h.getPropery(property)); 404 } else 322 405 h.logMessage(property + _T(" was not changed...")); 323 406 } 324 407 bool write_config(msi_helper &h, std::wstring path, std::wstring file) { 325 408 std::wstring t; 326 try { 327 if (h.getPropery(_T("CONF_CAN_WRITE")) != _T("1")) { 328 h.updateProgress(_T("File is not writable (writing to registry not supported)"), file); 329 return true; 330 } 331 Settings::getInstance()->setFile(path, file, true); 332 write_string_item_if_changed(h, _T("ALLOWED_HOSTS"), MAIN_SECTION_TITLE, MAIN_ALLOWED_HOSTS); 333 write_string_item_if_changed(h, _T("NSCLIENT_PWD"), MAIN_SECTION_TITLE, MAIN_SETTINGS_PWD); 334 335 settings_base::sectionList list; 336 if (h.isChangedProperyAndOld(_T("CONF_NRPE"))) 337 list.push_back(_T("NRPEListener.dll")); 338 if (h.isChangedProperyAndOld(_T("CONF_NSCLIENT"))) 339 list.push_back(_T("NSClientListener.dll")); 340 if (h.isChangedProperyAndOld(_T("CONF_NSCA"))) 341 list.push_back(_T("NSCAAgent.dll")); 342 if (h.isChangedProperyAndOld(_T("CONF_WMI"))) 343 list.push_back(_T("CheckWMI.dll")); 344 if (h.isChangedProperyAndOld(_T("CONF_CHECKS"))) { 345 list.push_back(_T("FileLogger.dll")); 346 list.push_back(_T("CheckSystem.dll")); 347 list.push_back(_T("CheckDisk.dll")); 348 list.push_back(_T("CheckEventLog.dll")); 349 list.push_back(_T("CheckHelpers.dll")); 350 } 351 if (!list.empty()) 352 Settings::getInstance()->writeSection(_T("modules"), list); 353 Settings::getInstance()->write(); 354 } catch (SettingsException e) { 355 h.errorMessage(_T("Failed to write new configuration file: ") + file + _T(": ") + e.getMessage()); 356 return ERROR_SUCCESS; 357 } 358 return true; 409 msi_helper::custom_action_data_w data; 410 411 data.write_string(path); 412 data.write_string(file); 413 414 //cd_prop.write_int(1); 415 if (h.getPropery(_T("CONF_CAN_WRITE")) != _T("1")) { 416 h.updateProgress(_T("File is not writable (writing to registry not supported)"), file); 417 return true; 418 } 419 420 //Settings::getInstance()->setFile(path, file, true); 421 write_string_item_if_changed(h, data, _T("ALLOWED_HOSTS"), MAIN_SECTION_TITLE, MAIN_ALLOWED_HOSTS); 422 write_string_item_if_changed(h, data, _T("NSCLIENT_PWD"), MAIN_SECTION_TITLE, MAIN_SETTINGS_PWD); 423 424 settings_base::sectionList list; 425 if (h.isChangedProperyAndOld(_T("CONF_NRPE"))) 426 list.push_back(_T("NRPEListener.dll")); 427 if (h.isChangedProperyAndOld(_T("CONF_NSCLIENT"))) 428 list.push_back(_T("NSClientListener.dll")); 429 if (h.isChangedProperyAndOld(_T("CONF_NSCA"))) 430 list.push_back(_T("NSCAAgent.dll")); 431 if (h.isChangedProperyAndOld(_T("CONF_WMI"))) 432 list.push_back(_T("CheckWMI.dll")); 433 if (h.isChangedProperyAndOld(_T("CONF_CHECKS"))) { 434 list.push_back(_T("FileLogger.dll")); 435 list.push_back(_T("CheckSystem.dll")); 436 list.push_back(_T("CheckDisk.dll")); 437 list.push_back(_T("CheckEventLog.dll")); 438 list.push_back(_T("CheckHelpers.dll")); 439 } 440 if (list.size() > 0) { 441 data.write_int(2); 442 data.write_list(list); 443 } 444 if (data.has_data()) { 445 h.logMessage(_T("Scheduling (ExecWriteConfig): ") + data.to_string()); 446 HRESULT hr = h.do_deferred_action(L"ExecWriteConfig", data, 1000); 447 if (FAILED(hr)) { 448 h.errorMessage(_T("failed to schedule config update")); 449 return hr; 450 } 451 } 359 452 } 360 453 … … 422 515 423 516 //#pragma comment(linker, "/EXPORT:UpdateConfig=_UpdateConfig@4") 424 extern "C" UINT __stdcall UpdateConfig (MSIHANDLE hInstall) {425 msi_helper h(hInstall, _T("UpdateConfig"));426 try {427 std::wstring target = h.getTargetPath(_T("INSTALLLOCATION"));428 std::wstring svc_exe = h.getPropery(_T("INSTALL_SVC_EXE"));429 std::wstring svc_sname = h.getPropery(_T("INSTALL_SVC_SHORTNAME"));430 std::wstring svc_lname = h.getPropery(_T("INSTALL_SVC_LONGNAME"));431 std::wstring svc_desc = h.getPropery(_T("INSTALL_SVC_DESC"));432 433 std::wstring main_conf = h.getPropery(_T("MAIN_CONFIGURATION_FILE"));434 std::wstring custom_conf = h.getPropery(_T("CUSTOM_CONFIGURATION_FILE"));435 436 std::wstring write = target + _T("\\") + custom_conf;437 h.logMessage(_T("config file (update): ") + write);438 439 h.logMessage(_T("service: ") + svc_exe);440 h.logMessage(_T("service short name: ") + svc_sname);441 h.logMessage(_T("service long name: ") + svc_lname);442 h.logMessage(_T("service desc: ") + svc_desc);443 444 std::wstring filename = target + _T("\\") + svc_exe;445 h.logMessage(_T("service exe: ") + filename);446 447 if (h.getPropery(_T("CONF_CAN_WRITE")) == _T("1")) {448 if (h.getPropery(_T("KEEP_WHICH_CONFIG")) == _T("OLD")) {449 CopyFile((target + _T("\\nsc.ini")).c_str(), (target + _T("\\nsc.new")).c_str(), FALSE);450 CopyFile((h.getTempPath() + _T("\\old_nsc.ini")).c_str(), (target + _T("\\nsc.ini")).c_str(), FALSE);451 } else {452 CopyFile((h.getTempPath() + _T("\\old_nsc.ini")).c_str(), (target + _T("\\nsc.old")).c_str(), FALSE);453 }454 }455 if (h.getPropery(_T("KEEP_WHICH_CONFIG")) == _T("NEW")) {456 if (!write_config(h, target, custom_conf)) {457 h.logMessage(_T("Failed to write configuration"));458 return ERROR_INSTALL_FAILURE;459 }460 }461 462 h.startProgress(10000, 2*10000, _T("Seting up service: [2] ([1])..."), _T("Seting up service: [2] ([1])... (X)"));463 if (!install(h, filename, svc_sname, svc_lname, svc_desc)) {464 h.logMessage(_T("service installtion failed"));465 return ERROR_INSTALL_FAILURE;466 }467 h.logMessage(_T("service installed"));468 } catch (installer_exception e) {469 h.errorMessage(_T("Failed to install service: ") + e.what());470 return ERROR_INSTALL_FAILURE;471 } catch (...) {472 h.errorMessage(_T("Failed to install service: <UNKNOWN EXCEPTION>"));473 return ERROR_INSTALL_FAILURE;474 }475 return ERROR_SUCCESS;476 }477 517 478 518 extern "C" UINT __stdcall StartAllServices (MSIHANDLE hInstall) { -
helpers/installer_dll/main_dll.def
r358cda1 r308b6f5 2 2 3 3 EXPORTS 4 UpdateConfig5 4 ImportConfig 5 ScheduleWriteConfig 6 ExecWriteConfig 6 7 StartAllServices 7 8 StopAllServices -
helpers/installer_dll_fw/Jamfile
r8170e81 r308b6f5 15 15 <runtime-link>static 16 16 <threading>multi 17 <include>"D:/Program/Microsoft Platform SDK for Windows Server 2003 R2/Include" 17 # <include>"D:/Program/Microsoft Platform SDK for Windows Server 2003 R2/Include" 18 <include>"C:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/Include/Atl" 18 19 19 20 : # default build -
modules/CheckTaskSched/Jamfile
r1d53fe0 r308b6f5 20 20 #<user-interface>gui 21 21 <runtime-link>static 22 <include>"C:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/include" 23 <library-path>"C:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib" 22 24 23 25 : # default build -
modules/CheckWMI/Jamfile
r1d53fe0 r308b6f5 20 20 #<user-interface>gui 21 21 <runtime-link>static 22 <include>"C:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/include" 23 <library-path>"C:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib" 22 24 23 25 : # default build -
release-build.bat
r358cda1 r308b6f5 15 15 16 16 REM build x64 (Amd64, Emt64) binary 17 SET version=x6418 SET cmdline=build.bat runtime-link=static variant=release address-model=64 --library-path="%TARGET_LIB_x64_DIR%" --with-psdk-lib="%PLATTFORM_SDK_LIB_x64%" --with-psdk="%PLATTFORM_SDK_INCLUDE%" --wix="%WIX_PATH%"19 call build.bat runtime-link=static variant=release address-model=64 --library-path="%TARGET_LIB_x64_DIR%" --with-psdk-lib="%PLATTFORM_SDK_LIB_x64%" --with-psdk="%PLATTFORM_SDK_INCLUDE%" --wix="%WIX_PATH%"20 if %ERRORLEVEL% == -1 goto :error17 rem SET version=x64 18 rem SET cmdline=build.bat runtime-link=static variant=release address-model=64 --library-path="%TARGET_LIB_x64_DIR%" --with-psdk-lib="%PLATTFORM_SDK_LIB_x64%" --with-psdk="%PLATTFORM_SDK_INCLUDE%" --wix="%WIX_PATH%" 19 rem call build.bat runtime-link=static variant=release address-model=64 --library-path="%TARGET_LIB_x64_DIR%" --with-psdk-lib="%PLATTFORM_SDK_LIB_x64%" --with-psdk="%PLATTFORM_SDK_INCLUDE%" --wix="%WIX_PATH%" 20 rem if %ERRORLEVEL% == -1 goto :error 21 21 22 22
Note: See TracChangeset
for help on using the changeset viewer.








