儲存庫 vbox 的更動 86782
- 時間撮記:
- 2020-11-2 下午04:31:41 (4 年 以前)
- svn:sync-xref-src-repo-rev:
- 141208
- 位置:
- trunk/src/VBox/Installer/win
- 檔案:
-
- 修改 15 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/Installer/win/InstallHelper/VBoxInstallHelper.cpp
r86777 r86782 144 144 145 145 /** 146 * Tries to retrieve the Python installation path on the system. 146 * Waits for a started process to terminate. 147 * 148 * @returns VBox status code. 149 * @param Process Handle of process to wait for. 150 * @param msTimeout Timeout (in ms) to wait for process to terminate. 151 * @param pProcSts Pointer to process status on return. 152 */ 153 static int procWait(RTPROCESS Process, RTMSINTERVAL msTimeout, PRTPROCSTATUS pProcSts) 154 { 155 uint64_t tsStartMs = RTTimeMilliTS(); 156 157 while (RTTimeMilliTS() - tsStartMs <= msTimeout) 158 { 159 int rc = RTProcWait(Process, RTPROCWAIT_FLAGS_NOBLOCK, pProcSts); 160 if (rc == VERR_PROCESS_RUNNING) 161 continue; 162 else if (RT_FAILURE(rc)) 163 return rc; 164 165 if ( pProcSts->iStatus != 0 166 || pProcSts->enmReason != RTPROCEXITREASON_NORMAL) 167 { 168 rc = VERR_GENERAL_FAILURE; /** @todo Fudge! */ 169 } 170 171 return VINF_SUCCESS; 172 } 173 174 return VERR_TIMEOUT; 175 } 176 177 /** 178 * Runs an executable on the OS. 179 * 180 * @returns VBox status code. 181 * @param hModule Windows installer module handle. 182 * @param pcsExe Absolute path of executable to run. 183 * @param papcszArgs Pointer to command line arguments to use for calling the executable. 184 * @param cArgs Number of command line arguments in \a papcszArgs. 185 */ 186 static int procRun(MSIHANDLE hModule, const char *pcszImage, const char **papcszArgs, size_t cArgs) 187 { 188 RT_NOREF(cArgs); 189 190 RTPROCESS Process; 191 RT_ZERO(Process); 192 193 uint32_t fProcess = 0; 194 #ifndef DEBUG 195 fProcess |= RTPROC_FLAGS_HIDDEN; 196 #endif 197 198 int rc = RTProcCreate(pcszImage, papcszArgs, RTENV_DEFAULT, fProcess, &Process); 199 if (RT_SUCCESS(rc)) 200 { 201 RTPROCSTATUS ProcSts; 202 RT_ZERO(ProcSts); 203 204 rc = procWait(Process, RT_MS_30SEC, &ProcSts); 205 206 if (RT_FAILURE(rc)) 207 logStringF(hModule, "procRun: Waiting for process \"%s\" failed with %Rrc (process status: %d, reason: %d)\n", 208 pcszImage, rc, ProcSts.iStatus, ProcSts.enmReason); 209 } 210 else 211 logStringF(hModule, "procRun: Creating process for \"%s\" failed with %Rrc\n", pcszImage, rc); 212 213 return rc; 214 } 215 216 /** 217 * Tries to retrieve the Python installation path on the system, extended version. 147 218 * 148 219 * @returns VBox status code. … … 152 223 * Must be free'd by the caller using RTStrFree(). 153 224 */ 154 static int getPythonPath (MSIHANDLE hModule, HKEY hKeyRoot, char **ppszPath)225 static int getPythonPathEx(MSIHANDLE hModule, HKEY hKeyRoot, char **ppszPath) 155 226 { 156 227 HKEY hkPythonCore = NULL; … … 194 265 dwErr = RegQueryValueExW(hkPythonInstPath, L"", NULL, &dwKeyType, (LPBYTE)wszVal, &dwKey); 195 266 if (dwErr == ERROR_SUCCESS) 196 logStringF(hModule, " InstallPythonAPI: Path \"%ls\" found.", wszVal);267 logStringF(hModule, "getPythonPath: Path \"%ls\" found.", wszVal); 197 268 198 269 if (pszPythonPath) /* Free former path, if any. */ … … 207 278 if (!RTPathExists(pszPythonPath)) 208 279 { 209 logStringF(hModule, " InstallPythonAPI: Warning: Path \"%s\" does not exist, skipping.", wszVal);280 logStringF(hModule, "getPythonPath: Warning: Defined path \"%s\" does not exist, skipping.", wszVal); 210 281 rc = VERR_PATH_NOT_FOUND; 211 282 } … … 227 298 228 299 /** 229 * Waits for a started process to terminate.300 * Retrieves the absolute path of the Python installation. 230 301 * 231 302 * @returns VBox status code. 232 * @param Process Handle of process to wait for.233 * @param msTimeout Timeout (in ms) to wait for process to terminate.234 * @param pProcSts Pointer to process status on return.303 * @param hModule Windows installer module handle. 304 * @param ppszPath Where to store the absolute path of the Python installation. 305 * Must be free'd by the caller. 235 306 */ 236 int procWait(RTPROCESS Process, RTMSINTERVAL msTimeout, PRTPROCSTATUS pProcSts) 237 { 238 uint64_t tsStartMs = RTTimeMilliTS(); 239 240 while (RTTimeMilliTS() - tsStartMs <= msTimeout) 241 { 242 int rc = RTProcWait(Process, RTPROCWAIT_FLAGS_NOBLOCK, pProcSts); 243 if (rc == VERR_PROCESS_RUNNING) 244 continue; 245 else if (RT_FAILURE(rc)) 246 return rc; 247 248 if ( pProcSts->iStatus != 0 249 || pProcSts->enmReason != RTPROCEXITREASON_NORMAL) 250 { 251 rc = VERR_GENERAL_FAILURE; /** @todo Fudge! */ 252 } 253 254 return VINF_SUCCESS; 255 } 256 257 return VERR_TIMEOUT; 307 static int getPythonPath(MSIHANDLE hModule, char **ppszPath) 308 { 309 int rc = getPythonPathEx(hModule, HKEY_LOCAL_MACHINE, ppszPath); 310 if (RT_FAILURE(rc)) 311 rc = getPythonPathEx(hModule, HKEY_CURRENT_USER, ppszPath); 312 313 return rc; 314 } 315 316 /** 317 * Retrieves the absolute path of the Python executable. 318 * 319 * @returns VBox status code. 320 * @param hModule Windows installer module handle. 321 * @param ppszPythonExe Where to store the absolute path of the Python executable. 322 * Must be free'd by the caller. 323 */ 324 static int getPythonExe(MSIHANDLE hModule, char **ppszPythonExe) 325 { 326 int rc = getPythonPath(hModule, ppszPythonExe); 327 if (RT_SUCCESS(rc)) 328 rc = RTStrAAppend(ppszPythonExe, "python.exe"); /** @todo Can this change? */ 329 330 return rc; 331 } 332 333 /** 334 * Checks if all dependencies for running the VBox Python API bindings are met. 335 * 336 * @returns VBox status code, or error if depedencies are not met. 337 * @param hModule Windows installer module handle. 338 * @param pcszPythonExe Path to Python interpreter image (.exe). 339 */ 340 static int checkPythonDependencies(MSIHANDLE hModule, const char *pcszPythonExe) 341 { 342 /* 343 * Check if importing the win32api module works. 344 * This is a prerequisite for setting up the VBox API. 345 */ 346 logStringF(hModule, "checkPythonDependencies: Checking for win32api extensions ..."); 347 348 const char *papszArgs[4] = { pcszPythonExe, "-c", "import win32api", NULL}; 349 350 int rc = procRun(hModule, pcszPythonExe, papszArgs, RT_ELEMENTS(papszArgs)); 351 if (RT_SUCCESS(rc)) 352 { 353 logStringF(hModule, "checkPythonDependencies: win32api found\n"); 354 } 355 else 356 logStringF(hModule, "checkPythonDependencies: Importing win32api failed with %Rrc\n", rc); 357 358 return rc; 258 359 } 259 360 … … 272 373 { 273 374 char *pszPythonPath; 274 int rc = getPythonPath(hModule, HKEY_LOCAL_MACHINE, &pszPythonPath); 275 if (RT_FAILURE(rc)) 276 rc = getPythonPath(hModule, HKEY_CURRENT_USER, &pszPythonPath); 277 375 int rc = getPythonPath(hModule, &pszPythonPath); 278 376 if (RT_SUCCESS(rc)) 279 377 { … … 296 394 logStringF(hModule, "IsPythonInstalled: Error: No suitable Python installation found (%Rrc), skipping installation.", rc); 297 395 396 if (RT_FAILURE(rc)) 397 logStringF(hModule, "IsPythonInstalled: Python seems not to be installed (%Rrc); please download + install the Python Core package.", rc); 398 298 399 VBoxSetMsiProp(hModule, L"VBOX_PYTHON_INSTALLED", RT_SUCCESS(rc) ? L"1" : L"0"); 400 401 return ERROR_SUCCESS; /* Never return failure. */ 402 } 403 404 /** 405 * Checks if all dependencies for running the VBox Python API bindings are met. 406 * 407 * Called from the MSI installer as custom action. 408 * 409 * @returns Always ERROR_SUCCESS. 410 * Sets public property VBOX_PYTHON_DEPS_INSTALLED to "0" (false) or "1" (success). 411 * 412 * @param hModule Windows installer module handle. 413 */ 414 UINT __stdcall ArePythonAPIDepsInstalled(MSIHANDLE hModule) 415 { 416 char *pszPythonExe; 417 int rc = getPythonExe(hModule, &pszPythonExe); 418 if (RT_SUCCESS(rc)) 419 { 420 rc = checkPythonDependencies(hModule, pszPythonExe); 421 if (RT_SUCCESS(rc)) 422 logStringF(hModule, "ArePythonAPIDepsInstalled: Dependencies look good.\n"); 423 424 RTStrFree(pszPythonExe); 425 } 426 427 if (RT_FAILURE(rc)) 428 logStringF(hModule, "ArePythonAPIDepsInstalled: Failed with %Rrc\n", rc); 429 430 VBoxSetMsiProp(hModule, L"VBOX_PYTHON_DEPS_INSTALLED", RT_SUCCESS(rc) ? L"1" : L"0"); 299 431 300 432 return ERROR_SUCCESS; /* Never return failure. */ … … 315 447 logStringF(hModule, "InstallPythonAPI: Checking for installed Python environment(s) ..."); 316 448 317 char *pszPython Path;318 int rc = getPython Path(hModule, HKEY_LOCAL_MACHINE, &pszPythonPath);449 char *pszPythonExe; 450 int rc = getPythonExe(hModule, &pszPythonExe); 319 451 if (RT_FAILURE(rc)) 320 rc = getPythonPath(hModule, HKEY_CURRENT_USER, &pszPythonPath);321 322 if (RT_FAILURE(rc))323 452 { 324 453 VBoxSetMsiProp(hModule, L"VBOX_API_INSTALLED", L"0"); 325 326 logStringF(hModule, "InstallPythonAPI: Python seems not to be installed (%Rrc); please download + install the Python Core package.", rc);327 454 return ERROR_SUCCESS; 328 }329 330 logStringF(hModule, "InstallPythonAPI: Python installation found at \"%s\".", pszPythonPath);331 logStringF(hModule, "InstallPythonAPI: Checking for win32api extensions ...");332 333 uint32_t fProcess = 0;334 #ifndef DEBUG335 fProcess |= RTPROC_FLAGS_HIDDEN;336 #endif337 338 char szPythonPath[RTPATH_MAX] = { 0 };339 rc = RTPathAppend(szPythonPath, sizeof(szPythonPath), pszPythonPath);340 if (RT_SUCCESS(rc))341 {342 rc = RTPathAppend(szPythonPath, sizeof(szPythonPath), "python.exe");343 if (RT_SUCCESS(rc))344 {345 /*346 * Check if importing the win32api module works.347 * This is a prerequisite for setting up the VBox API.348 */349 RTPROCESS Process;350 RT_ZERO(Process);351 const char *papszArgs[4] = { szPythonPath, "-c", "import win32api", NULL};352 rc = RTProcCreate(szPythonPath, papszArgs, RTENV_DEFAULT, fProcess, &Process);353 if (RT_SUCCESS(rc))354 {355 RTPROCSTATUS ProcSts;356 rc = procWait(Process, RT_MS_30SEC, &ProcSts);357 if (RT_FAILURE(rc))358 logStringF(hModule, "InstallPythonAPI: Importing the win32api failed with %d (exit reason: %d)\n",359 ProcSts.iStatus, ProcSts.enmReason);360 }361 }362 455 } 363 456 … … 365 458 * Set up the VBox API. 366 459 */ 460 /* Get the VBox API setup string. */ 461 char *pszVBoxSDKPath; 462 rc = VBoxGetMsiPropUtf8(hModule, "CustomActionData", &pszVBoxSDKPath); 367 463 if (RT_SUCCESS(rc)) 368 464 { 369 /* Get the VBox API setup string. */ 370 char *pszVBoxSDKPath; 371 rc = VBoxGetMsiPropUtf8(hModule, "CustomActionData", &pszVBoxSDKPath); 465 /* Make sure our current working directory is the VBox installation path. */ 466 rc = RTPathSetCurrent(pszVBoxSDKPath); 372 467 if (RT_SUCCESS(rc)) 373 468 { 374 /* Make sure our current working directory is the VBox installation path. */375 rc = RT PathSetCurrent(pszVBoxSDKPath);469 /* Set required environment variables. */ 470 rc = RTEnvSet("VBOX_INSTALL_PATH", pszVBoxSDKPath); 376 471 if (RT_SUCCESS(rc)) 377 472 { 378 /* Set required environment variables. */ 379 rc = RTEnvSet("VBOX_INSTALL_PATH", pszVBoxSDKPath); 473 logStringF(hModule, "InstallPythonAPI: Invoking vboxapisetup.py in \"%s\" ...\n", pszVBoxSDKPath); 474 475 const char *papszArgs[4] = { pszPythonExe, "vboxapisetup.py", "install", NULL}; 476 477 rc = procRun(hModule, pszPythonExe, papszArgs, RT_ELEMENTS(papszArgs)); 380 478 if (RT_SUCCESS(rc)) 381 { 382 RTPROCSTATUS ProcSts; 383 RT_ZERO(ProcSts); 384 385 logStringF(hModule, "InstallPythonAPI: Invoking vboxapisetup.py in \"%s\" ...\n", pszVBoxSDKPath); 386 387 RTPROCESS Process; 388 RT_ZERO(Process); 389 const char *papszArgs[4] = { szPythonPath, "vboxapisetup.py", "install", NULL}; 390 rc = RTProcCreate(szPythonPath, papszArgs, RTENV_DEFAULT, fProcess, &Process); 391 if (RT_SUCCESS(rc)) 392 { 393 rc = procWait(Process, RT_MS_30SEC, &ProcSts); 394 if (RT_SUCCESS(rc)) 395 logStringF(hModule, "InstallPythonAPI: Installation of vboxapisetup.py successful\n"); 396 } 397 398 if (RT_FAILURE(rc)) 399 logStringF(hModule, "InstallPythonAPI: Calling vboxapisetup.py failed with %Rrc (process status: %d, exit reason: %d)\n", 400 rc, ProcSts.iStatus, ProcSts.enmReason); 401 } 402 else 403 logStringF(hModule, "InstallPythonAPI: Could set environment variable VBOX_INSTALL_PATH, rc=%Rrc\n", rc); 479 logStringF(hModule, "InstallPythonAPI: Installation of vboxapisetup.py successful\n"); 480 481 if (RT_FAILURE(rc)) 482 logStringF(hModule, "InstallPythonAPI: Calling vboxapisetup.py failed with %Rrc\n", rc); 404 483 } 405 484 else 406 logStringF(hModule, "InstallPythonAPI: Could set working directory to \"%s\", rc=%Rrc\n", pszVBoxSDKPath, rc); 407 408 RTStrFree(pszVBoxSDKPath); 485 logStringF(hModule, "InstallPythonAPI: Could set environment variable VBOX_INSTALL_PATH, rc=%Rrc\n", rc); 409 486 } 410 487 else 411 logStringF(hModule, "InstallPythonAPI: Unable to retrieve VBox installation directory, rc=%Rrc\n", rc); 412 } 488 logStringF(hModule, "InstallPythonAPI: Could set working directory to \"%s\", rc=%Rrc\n", pszVBoxSDKPath, rc); 489 490 RTStrFree(pszVBoxSDKPath); 491 } 492 else 493 logStringF(hModule, "InstallPythonAPI: Unable to retrieve VBox installation directory, rc=%Rrc\n", rc); 413 494 414 495 /* … … 419 500 logStringF(hModule, "InstallPythonAPI: Validating VBox API ...\n"); 420 501 421 RTPROCSTATUS ProcSts; 422 RT_ZERO(ProcSts); 423 424 RTPROCESS Process; 425 RT_ZERO(Process); 426 const char *papszArgs[4] = { szPythonPath, "-c", "from vboxapi import VirtualBoxManager", NULL}; 427 rc = RTProcCreate(szPythonPath, papszArgs, RTENV_DEFAULT, fProcess, &Process); 502 const char *papszArgs[4] = { pszPythonExe, "-c", "from vboxapi import VirtualBoxManager", NULL}; 503 504 rc = procRun(hModule, pszPythonExe, papszArgs, RT_ELEMENTS(papszArgs)); 428 505 if (RT_SUCCESS(rc)) 429 { 430 rc = procWait(Process, RT_MS_30SEC, &ProcSts); 431 if (RT_SUCCESS(rc)) 432 logStringF(hModule, "InstallPythonAPI: VBox API looks good.\n"); 433 } 506 logStringF(hModule, "InstallPythonAPI: VBox API looks good.\n"); 434 507 435 508 if (RT_FAILURE(rc)) 436 logStringF(hModule, "InstallPythonAPI: Validating VBox API failed with %Rrc (process status: %d, exit reason: %d)\n", 437 rc, ProcSts.iStatus, ProcSts.enmReason); 438 } 439 440 RTStrFree(pszPythonPath); 509 logStringF(hModule, "InstallPythonAPI: Validating VBox API failed with %Rrc\n", rc); 510 } 511 512 RTStrFree(pszPythonExe); 441 513 442 514 VBoxSetMsiProp(hModule, L"VBOX_API_INSTALLED", RT_SUCCESS(rc) ? L"1" : L"0"); -
trunk/src/VBox/Installer/win/InstallHelper/VBoxInstallHelper.def
r82968 r86782 20 20 IsSerialCheckNeeded 21 21 CheckSerial 22 IsPythonInstalled 23 ArePythonAPIDepsInstalled 22 24 InstallPythonAPI 23 25 InstallBranding … … 35 37 Ndis6CreateHostOnlyInterface 36 38 Ndis6UpdateHostOnlyInterfaces 37 -
trunk/src/VBox/Installer/win/NLS/de_DE.wxl
r82974 r86782 141 141 <String Id="WarnDisconNetIfacesDlg_Desc">Beim Installieren des [ProductName] Netzwerk-Features wird die Netzwerkverbindung unterbrochen und der Computer somit temporär vom Netzwerk getrennt.</String> 142 142 <String Id="WarnDisconNetIfacesDlg_Question">Jetzt mit der Installation fortfahren?</String> 143 144 <!----> 145 146 <String Id="WarnPythonDlg_Title">Fehlende Abhängigkeiten</String> 147 <String Id="WarnPythonDlg_Title2">Python Core / win32api</String> 148 <String Id="WarnPythonDlg_Desc">Um die [ProductName] Python-Unterstützung zu installieren, werden Python Core als auch das win32api-Paket benötigt.</String> 149 <String Id="WarnPythonDlg_Desc2">Wenn nun mit der Installation der [ProductName] Python-Unterstützung fortgefahren wird, muss diese später manuell eingerichtet werden. Bitte dazu im SDK-Handbuch für mehr Informationen nachschlagen.</String> 150 <String Id="WarnPythonDlg_Question">Jetzt mit der Installation fortfahren?</String> 143 151 144 152 <!----> -
trunk/src/VBox/Installer/win/NLS/el_GR.wxl
r82974 r86782 145 145 <String Id="WarnDisconNetIfacesDlg_Desc">Η εγκατάσταση των χαρακτηριστικών δικτύου [ProductName] θα επαναφέρει τη σύνδεση δικτύου σας και θα σας αποσυνδέσει προσωρινά από το δίκτυο.</String> 146 146 <String Id="WarnDisconNetIfacesDlg_Question">Συνέχιση της εγκατάστασης;</String> 147 148 <!----> 149 150 <String Id="WarnPythonDlg_Title">Missing Dependencies</String> 151 <String Id="WarnPythonDlg_Title2">Python Core / win32api</String> 152 <String Id="WarnPythonDlg_Desc">Installing the [ProductName] Python bindings requires the Python Core package and the win32api bindings to be installed first.</String> 153 <String Id="WarnPythonDlg_Desc2">When continuing the installation of the [ProductName] Python bindings now, those need to be set up manually later. Refert to the [ProductName] SDK manual for more information.</String> 154 <String Id="WarnPythonDlg_Question">Proceed with installation now?</String> 147 155 148 156 <!----> -
trunk/src/VBox/Installer/win/NLS/en_US.wxl
r82974 r86782 145 145 <String Id="WarnDisconNetIfacesDlg_Desc">Installing the [ProductName] Networking feature will reset your network connection and temporarily disconnect you from the network.</String> 146 146 <String Id="WarnDisconNetIfacesDlg_Question">Proceed with installation now?</String> 147 148 <!----> 149 150 <String Id="WarnPythonDlg_Title">Missing Dependencies</String> 151 <String Id="WarnPythonDlg_Title2">Python Core / win32api</String> 152 <String Id="WarnPythonDlg_Desc">Installing the [ProductName] Python bindings requires the Python Core package and the win32api bindings to be installed first.</String> 153 <String Id="WarnPythonDlg_Desc2">When continuing the installation of the [ProductName] Python bindings now, those need to be set up manually later. Refert to the [ProductName] SDK manual for more information.</String> 154 <String Id="WarnPythonDlg_Question">Proceed with installation now?</String> 147 155 148 156 <!----> -
trunk/src/VBox/Installer/win/NLS/fa_IR.wxl
r82974 r86782 114 114 <String Id="WarnDisconNetIfacesDlg_Desc">نصب ویژگی شبکه [ProductName] ارتباط شبکه شما را ریست خواهد کرد و موقتا ارتباط شما قطع خواهد شد.</String> 115 115 <String Id="WarnDisconNetIfacesDlg_Question">حالا با نصب اقدام کند؟</String> 116 <!----> 117 <String Id="WarnPythonDlg_Title">Missing Dependencies</String> 118 <String Id="WarnPythonDlg_Title2">Python Core / win32api</String> 119 <String Id="WarnPythonDlg_Desc">Installing the [ProductName] Python bindings requires the Python Core package and the win32api bindings to be installed first.</String> 120 <String Id="WarnPythonDlg_Desc2">When continuing the installation of the [ProductName] Python bindings now, those need to be set up manually later. Refert to the [ProductName] SDK manual for more information.</String> 121 <String Id="WarnPythonDlg_Question">Proceed with installation now?</String> 116 122 <!----> 117 123 <String Id="DiskCostDlg_SpaceRequired">فضای دیسک موردنیاز برای نصب ویژگی های انتخاب شده.</String> -
trunk/src/VBox/Installer/win/NLS/fr_FR.wxl
r82974 r86782 140 140 <String Id="WarnDisconNetIfacesDlg_Desc">L'installation de la fonctionnalité réseau de [ProductName] réinitialisera votre connection réseau et vous déconnectera temporairement du réseau.</String> 141 141 <String Id="WarnDisconNetIfacesDlg_Question">Désirez-vous poursuivre l'installation maintenant?</String> 142 143 <!----> 144 145 <String Id="WarnPythonDlg_Title">Missing Dependencies</String> 146 <String Id="WarnPythonDlg_Title2">Python Core / win32api</String> 147 <String Id="WarnPythonDlg_Desc">Installing the [ProductName] Python bindings requires the Python Core package and the win32api bindings to be installed first.</String> 148 <String Id="WarnPythonDlg_Desc2">When continuing the installation of the [ProductName] Python bindings now, those need to be set up manually later. Refert to the [ProductName] SDK manual for more information.</String> 149 <String Id="WarnPythonDlg_Question">Proceed with installation now?</String> 142 150 143 151 <!----> -
trunk/src/VBox/Installer/win/NLS/it_IT.wxl
r82974 r86782 114 114 <String Id="WarnDisconNetIfacesDlg_Desc">L'installazione delle funzionalità di rete di [ProductName] ripristinerà la connessione di rete causando una disconnessione temporanea dalla rete.</String> 115 115 <String Id="WarnDisconNetIfacesDlg_Question">Vuoi procedere subito con l'installazione?</String> 116 <!----> 117 <String Id="WarnPythonDlg_Title">Missing Dependencies</String> 118 <String Id="WarnPythonDlg_Title2">Python Core / win32api</String> 119 <String Id="WarnPythonDlg_Desc">Installing the [ProductName] Python bindings requires the Python Core package and the win32api bindings to be installed first.</String> 120 <String Id="WarnPythonDlg_Desc2">When continuing the installation of the [ProductName] Python bindings now, those need to be set up manually later. Refert to the [ProductName] SDK manual for more information.</String> 121 <String Id="WarnPythonDlg_Question">Proceed with installation now?</String> 116 122 <!----> 117 123 <String Id="DiskCostDlg_SpaceRequired">Lo spazio su disco richiesto per l'installazione delle funzionalità selezionate.</String> -
trunk/src/VBox/Installer/win/NLS/tr_TR.wxl
r82974 r86782 36 36 <String Id="ButtonText_Exit">Çı&kış</String> 37 37 38 38 <String Id="InstallModeCustom">Özel</String> 39 39 <String Id="Setup">Kur</String> 40 40 … … 56 56 <String Id="VB_Python">VirtualBox için Python desteği.</String> 57 57 58 59 60 58 <!----> 59 60 <String Id="NeedAdmin">[ProductName] uygulamasını yüklemek(kaldırmak) için yönetici haklarına sahip olmanız gerekir! Bu kur şimdi iptal edilecek.</String> 61 61 <String Id="WrongOS">Bu uygulama yalnızca Windows XP veya üzerinde çalışır.</String> 62 62 <String Id="Only32Bit">Bu uygulama yalnızca 32-bit Windows sistemlerinde çalışır. Lütfen [ProductName] 64-bit sürümünü yükleyin!</String> … … 65 65 <String Id="InnotekFound">Bu makinede eski bir innotek VirtualBox kurulumu bulundu. Lütfen önce bu paketi kaldırın ve sonra [ProductName] yükleyin!</String> 66 66 67 68 69 70 71 72 73 67 <!----> 68 69 <String Id="CancelDlg_Question">[ProductName] kurulumunu iptal etmek istediğinize emin misiniz?</String> 70 71 <!----> 72 73 <String Id="WelcomeDlg_Header">[ProductName] Kur Sihirbazına Hoş Geldiniz</String> 74 74 <String Id="WelcomeDlg_Body">Kur Sihirbazı, bilgisayarınıza [ProductName] uygulamasını yükleyecek. Devam etmek için İleri'ye veya Kur Sihirbazından çıkmak için İptal'e tıklayın.</String> 75 75 76 77 78 76 <!----> 77 78 <String Id="LicenseAgreementDlg_Header">Son Kullanıcı Lisans Sözleşmesi</String> 79 79 <String Id="LicenseAgreementDlg_Body">Lütfen aşağıdaki lisans sözleşmesini dikkatlice okuyun.</String> 80 80 <String Id="LicenseAgreementDlg_Accept">Lisans Sözleşmesi içindeki şartları kabul e&diyorum</String> … … 83 83 <!----> 84 84 85 85 <String Id="CheckSerialDlg_Header">Seri Numarası</String> 86 86 <String Id="CheckSerialDlg_Body">Lütfen aşağıdaki alana seri numaranızı girin. VirtualBox CD kutusu içerisindeki etikette bulacaksınız.</String> 87 87 <String Id="CheckSerialDlg_Footer">Seri numarasını girmeniz bittiğinde, aşağıdaki "Denetle" düğmesine basın".</String> 88 88 89 90 91 89 <!----> 90 91 <String Id="WrongSerialDlg_Header">Girilen seri numarası geçersiz!</String> 92 92 <String Id="WrongSerialDlg_Desc1">Seri numaranızı tekrar girmek için lütfen geri gidin.</String> 93 93 <String Id="WrongSerialDlg_Desc2">Seri numarasını etiket üzerine basıldığı gibi aynen hecesi hecesine yazılmak zorunda olduğunu aklınızdan çıkarmayın.</String> 94 94 95 96 97 95 <!----> 96 97 <String Id="WarnSaveStatesDlg_Header">Uyarı:</String> 98 98 <String Id="WarnSaveStatesDlg_Header2">Uyumsuz Kaydedildi Durumları!</String> 99 99 <String Id="WarnSaveStatesDlg_Desc">[ProductName] yükseltildiğinde, zaten varolan makinelerinizden gelen tüm kaydedildi durumları bundan böyle çalışmayacaktır! Kurulumdan sonra, bunlardan el ile vazgeçmek zorundasınız.</String> 100 100 <String Id="WarnSaveStatesDlg_Proceed">Şimdi kuruluma devam edilsin mi?</String> 101 101 102 103 104 102 <!----> 103 104 <String Id="WarnTAPDevicesDlg_Header">Anamakine Arayüzleri</String> 105 105 <String Id="WarnTAPDevicesDlg_Desc">Önceki sürümdeki makineleriniz için bazı anamakine arayüzleri kullandıysanız, bu kurulumdan sonra bunları el ile yeniden oluşturmak zorundasınız.</String> 106 106 107 108 109 110 111 107 <!----> 108 109 <String Id="NetCfgLocked">Şurada belirtilen uygulama yüklemeye devam etmeden önce kapatılmalıdır: "[2]"</String> 110 111 <!----> 112 112 113 113 <String Id="CustomizeDlg_Location">Konum:</String> … … 120 120 <String Id="CustomizeDlg_SelItemPath">CustomizeDlgLocation-CustomizeDlgLocation</String> 121 121 122 123 124 122 <!----> 123 124 <String Id="Customize2Dlg_Header">Özelleştir</String> 125 125 <String Id="Customize2Dlg_Desc">Lütfen aşağıdaki seçeneklerden seçin:</String> 126 126 <String Id="Customize2Dlg_CreateStartMenuEntries">Başlangıç menüsü girişlerini oluştur</String> … … 129 129 <String Id="Customize2Dlg_RegisterFileExtensions">Dosya ilişkilendirmelerini kaydettir</String> 130 130 131 131 <!----> 132 132 133 133 <String Id="SelectionNetworkTypeDlg_CommonDescription">Lütfen hangi tür ağ sürücülerini kullanacağınızı seçin:</String> … … 139 139 <String Id="SelectionNetworkTypeDlg_RadioButtonNDIS6">NDIS6 ağ sürücülerini kullan.</String> 140 140 141 142 143 141 <!----> 142 143 <String Id="WarnDisconNetIfacesDlg_Title">Uyarı:</String> 144 144 <String Id="WarnDisconNetIfacesDlg_Title2">Ağ Arayüzleri</String> 145 145 <String Id="WarnDisconNetIfacesDlg_Desc">[ProductName] Ağ Oluşturma özelliğini yüklemek ağ bağlantınızı sıfırlayacak ve geçici olarak ağdan bağlantınızı kesecektir.</String> 146 146 <String Id="WarnDisconNetIfacesDlg_Question">Şimdi kuruluma devam edilsin mi?</String> 147 147 148 <!----> 149 150 <String Id="DiskCostDlg_SpaceRequired">Seçilen özelliklerin kurulumu için gereken disk alanı.</String> 148 <!----> 149 150 <String Id="WarnPythonDlg_Title">Missing Dependencies</String> 151 <String Id="WarnPythonDlg_Title2">Python Core / win32api</String> 152 <String Id="WarnPythonDlg_Desc">Installing the [ProductName] Python bindings requires the Python Core package and the win32api bindings to be installed first.</String> 153 <String Id="WarnPythonDlg_Desc2">When continuing the installation of the [ProductName] Python bindings now, those need to be set up manually later. Refert to the [ProductName] SDK manual for more information.</String> 154 <String Id="WarnPythonDlg_Question">Proceed with installation now?</String> 155 156 <!----> 157 158 <String Id="DiskCostDlg_SpaceRequired">Seçilen özelliklerin kurulumu için gereken disk alanı.</String> 151 159 <String Id="DiskCostDlg_NotEnoughSpace">Vurgulanan birimler (eğer varsa) şu anki seçilen özellikler için kullanılabilir yeterli disk alanına sahip değil. Ya vurgulanan birimlerden bazı dosyaları kaldırabilir ya da yerel sürücü(lere)ye daha az özellik yüklemeyi seçebilirsiniz veya farklı hedef sürücü(leri) seçebilirsiniz.</String> 152 160 <String Id="DiskCostDlg_SpaceRequirements">Disk Alanı Gereksinimleri</String> 153 161 <String Id="DiskCostDlg_VolumeList">{120}{70}{70}{70}{70}</String> 154 162 155 156 157 163 <!----> 164 165 <String Id="BrowseDlg_BrowseDestFolder">Hedef klasöre gözatın</String> 158 166 <String Id="BrowseDlg_ChangeCurFolder">Şu anki hedef klasörü değiştirin</String> 159 167 <String Id="BrowseDlg_UpOneLevelTooltip">Bir seviye yukarı</String> … … 162 170 <String Id="BrowseDlg_FolderName">&Klasör adı:</String> 163 171 164 165 166 172 <!----> 173 174 <String Id="VerifyReadyDlg_ReadyToBegin">Kur Sihirbazı, [InstallMode] kuruluma başlamak için hazır.</String> 167 175 <String Id="VerifyReadyDlg_ClickInstall">Kuruluma başlamak için Yükle'ye tıklayın. Eğer herhangi bir kurulum ayarınızı gözden geçirmek veya değiştirmek istiyorsanız, Geri'ye tıklayın. Sihirbazdan çıkmak için İptal'e tıklayın.</String> 168 176 <String Id="VerifyReadyDlg_ReadyToInstall">Yüklemek için hazır</String> 169 177 170 171 172 178 <!----> 179 180 <String Id="ExitDlg_ClickFinish">Kur Sihirbazından çıkmak için Bitir düğmesine tıklayın.</String> 173 181 <String Id="ExitDlg_InstComplete">[ProductName] kurulumu tamamlandı.</String> 174 182 <String Id="ExitDlg_StartVBox">Kurulumdan sonra [ProductName] uygulamasını başlat</String> 175 183 176 177 178 184 <!----> 185 186 <String Id="FatalErrorDlg_Header">[ProductName] Kur Sihirbazı zamansız sonlandı</String> 179 187 <String Id="FatalErrorDlg_Desc">[ProductName] kur bir hata yüzünden zamansız sonlandı. Sisteminiz değiştirilmedi. Bu programı daha sonraki bir zamanda yüklemek için lütfen kurulumu tekrar çalıştırın.</String> 180 188 <String Id="FatalErrorDlg_Footer">Kur Sihirbazından çıkmak için Bitir düğmesine tıklayın.</String> 181 189 182 183 184 190 <!----> 191 192 <String Id="FilesInUse_Text">Bu kur tarafından güncellenmesi gereken dosyaları aşağıdaki uygulamalar kullanıyor. Bu uygulamaları kapatın ve sonra kuruluma devam etmek için &Yeniden Dene'ye veya çıkmak için İptal'e tıklayın.</String> 185 193 <String Id="FilesInUse_Description">Şu anda kullanımda olan bazı dosyaların güncellenmesi gerek.</String> 186 194 <String Id="FilesInUse_Title">Kullanımda olan Dosyalar</String> 187 195 188 189 190 196 <!----> 197 198 <String Id="UserExitDlg_Header">[ProductName] Kur Sihirbazı yarıda kesildi</String> 191 199 <String Id="UserExitDlg_Desc">[ProductName] kur yarıda kesildi. Sisteminiz değiştirilmedi. Bu programı daha sonraki bir zamanda yüklemek için lütfen kurulumu tekrar çalıştırın.</String> 192 200 <String Id="UserExitDlg_Footer">Kur Sihirbazından çıkmak için Bitir düğmesine tıklayın.</String> 193 201 194 195 196 197 198 199 200 202 <!----> 203 204 <String Id="ProgressDlg_PleaseWait">Kur Sihirbazı, [ProductName] uygulamasını yüklerken lütfen bekleyin. Bu birkaç dakika alabilir.</String> 205 206 <!----> 207 208 <String Id="ResumeDlg_Header">[ProductName] Kur Sihirbazına Devam Ediliyor</String> 201 209 <String Id="ResumeDlg_Desc">Kur Sihirbazı [ProductName] uygulamasının bilgisayarınıza kurulumunu tamamlayacak. Devam etmek için Yükle'ye veya Kur Sihirbazından çıkmak için İptal'e tıklayın.</String> 202 210 203 204 205 211 <!----> 212 213 <String Id="MaintenanceTypeDlg_Header">Kurulumu Değiştir, Onar veya Kaldır</String> 206 214 <String Id="MaintenanceTypeDlg_SelOption">Uygulanmasını istediğiniz işlemi seçin.</String> 207 215 <String Id="MaintenanceTypeDlg_Repair">&Onar</String> … … 216 224 <String Id="MaintenanceTypeDlg_RemoveProgress2">kaldırma</String> 217 225 218 219 220 226 <!----> 227 228 <String Id="MaintenanceWelcomeDlg_Header">[ProductName] Kur Sihirbazına Hoş Geldiniz</String> 221 229 <String Id="MaintenanceWelcomeDlg_Desc">Kur Sihirbazı şu anki kurulumunuzu onarmanıza veya [ProductName] uygulamasını bilgisayarınızdan kaldırmanıza izin verecektir. Devam etmek için İleri'ye veya Kur Sihirbazından çıkmak için İptal'e tıklayın.</String> 222 230 223 231 <!----> 224 232 225 233 <String Id="OutOfDiskDlg_InstallationExceeds">Kurulum için gereken disk alanı mevcut disk alanını aşıyor.</String> … … 227 235 <String Id="OutOfDiskDlg_OutOfDiskSpace">Yetersiz Disk Alanı</String> 228 236 229 237 <!----> 230 238 231 239 <String Id="OutOfRbDiskDlg_InstallationExceeds">Kurulum için gereken disk alanı mevcut disk alanını aşıyor.</String> … … 234 242 <String Id="OutOfRbDiskDlg_Desc">Alternatif olarak, yükleyicinin geriye alma işlevselliğini etkisizleştirmeyi seçebilirsiniz. Bu, herhangi bir şekilde kurulumun yarıda kesilmesiyle yükleyicinin bilgisayarınızın orijinal durumuna geri yüklenmesi için izin verir. Geri almayı etkisizleştirme riskini almak isterseniz Evet'e tıklayın.</String> 235 243 236 237 238 244 <!----> 245 246 <String Id="VerifyRemoveDlg_Header">[ProductName] Kaldır</String> 239 247 <String Id="VerifyRemoveDlg_Desc">Programı bilgisayarınızdan kaldırmayı seçmektesiniz.</String> 240 248 <String Id="VerifyRemoveDlg_ClickRemove">[ProductName] uygulamasını bilgisayarınızdan kaldırmak için Kaldır'a tıklayın. Eğer herhangi bir kurulum ayarınızı gözden geçirmek veya değiştirmek istiyorsanız, Geri'ye tıklayın. Sihirbazdan çıkmak için İptal'e tıklayın.</String> 241 249 242 243 244 250 <!----> 251 252 <String Id="VerifyRepairDlg_Header">[ProductName] Onar</String> 245 253 <String Id="VerifyRepairDlg_ReadyToBegin">Kur Sihirbazı [ProductName] uygulamasının onarılmasına başlamak için hazır.</String> 246 254 <String Id="VerifyRepairDlg_ClickRepair">[ProductName] kurulumunu onarmak için Onar'a tıklayın. Eğer herhangi bir kurulum ayarınızı gözden geçirmek veya değiştirmek istiyorsanız, Geri'ye tıklayın. Sihirbazdan çıkmak için İptal'e tıklayın.</String> 247 255 248 249 250 251 252 253 254 256 <!----> 257 258 <String Id="WaitForCostingDlg_PleaseWait">Yükleyici disk alanı gereksinimlerinizi belirlemeyi tamamlarken lütfen bekleyin.</String> 259 260 <!----> 261 262 <String Id="MsiRMFilesInUse_Text">Bu kur tarafından güncellenmesi gereken dosyaları aşağıdaki uygulamalar kullanıyor. Kur Sihirbazına bunları kapatması ve yeniden başlatmayı denemesi veya daha sonra makineyi yeniden başlatması için izin verebilirsiniz.</String> 255 263 <String Id="MsiRMFilesInUse_Description">Şu anda kullanımda olan bazı dosyaların güncellenmesi gerek.</String> 256 264 <String Id="MsiRMFilesInUse_Title">Kullanımda olan Dosyalar</String> … … 418 426 <String Id="Error1935">[2] derleme bileşeninin kurulumu sırasında bir hata meydana geldi. HRESULT: [3]. {{derleme arayüzü: [4], işlev: [5], derleme adı: [6]}}</String> 419 427 420 428 <!-- Own / special errors --> 421 429 <String Id="Error25001">"[2]" uygulamasının kuruluma devam etmesi için kapatılması gerekiyor.</String> 422 430 … … 548 556 <String Id="ProgressTextUnpublishProduct">Ürün bilgisi yayından kaldırılıyor</String> 549 557 550 558 <String Id="UITextbytes">bayt</String> 551 559 <String Id="UITextGB">GB</String> 552 560 <String Id="UITextKB">KB</String> -
trunk/src/VBox/Installer/win/NLS/zh_CN.wxl
r82974 r86782 145 145 <String Id="WarnDisconNetIfacesDlg_Desc">安装 [ProductName] 网络功能将重置网络连接并暂时中断网络连接。</String> 146 146 <String Id="WarnDisconNetIfacesDlg_Question">立即安装吗?</String> 147 148 <!----> 149 150 <String Id="WarnPythonDlg_Title">Missing Dependencies</String> 151 <String Id="WarnPythonDlg_Title2">Python Core / win32api</String> 152 <String Id="WarnPythonDlg_Desc">Installing the [ProductName] Python bindings requires the Python Core package and the win32api bindings to be installed first.</String> 153 <String Id="WarnPythonDlg_Desc2">When continuing the installation of the [ProductName] Python bindings now, those need to be set up manually later. Refert to the [ProductName] SDK manual for more information.</String> 154 <String Id="WarnPythonDlg_Question">Proceed with installation now?</String> 147 155 148 156 <!----> -
trunk/src/VBox/Installer/win/NLS/zh_TW.wxl
r82974 r86782 145 145 <String Id="WarnDisconNetIfacesDlg_Desc">安裝 [ProductName] 網路功能將重設您的網路連線並暫時中斷網路連線。</String> 146 146 <String Id="WarnDisconNetIfacesDlg_Question">立即進行安裝嗎?</String> 147 148 <!----> 149 150 <String Id="WarnPythonDlg_Title">Missing Dependencies</String> 151 <String Id="WarnPythonDlg_Title2">Python Core / win32api</String> 152 <String Id="WarnPythonDlg_Desc">Installing the [ProductName] Python bindings requires the Python Core package and the win32api bindings to be installed first.</String> 153 <String Id="WarnPythonDlg_Desc2">When continuing the installation of the [ProductName] Python bindings now, those need to be set up manually later. Refert to the [ProductName] SDK manual for more information.</String> 154 <String Id="WarnPythonDlg_Question">Proceed with installation now?</String> 147 155 148 156 <!----> -
trunk/src/VBox/Installer/win/UserInterface.wxi
r82970 r86782 305 305 <Publish Event="NewDialog" Value="VBoxCustomize2Dlg"/> 306 306 <?else ?> 307 <Publish Event="NewDialog" Value="VBoxVerifyReadyDlg">1</Publish> 307 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?> 308 <Publish Event="NewDialog" Value="VBoxWarnPythonDlg"><![CDATA[(&VBoxPython=3 AND (VBOX_PYTHON_DEPS_INSTALLED="0"))]]></Publish> 309 <Publish Event="NewDialog" Value="VBoxVerifyReadyDlg"><![CDATA[((&VBoxPython<3) OR (VBOX_PYTHON_DEPS_INSTALLED="1"))]]></Publish> 310 <?else ?> 311 <Publish Event="NewDialog" Value="VBoxVerifyReadyDlg">1</Publish> 312 <?endif?> 313 308 314 <?endif ?> 309 315 <Subscribe Event="SelectionNoItems" Attribute="Enabled" /> … … 413 419 <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" 414 420 Default="yes" Cancel="yes" Text="!(loc.ButtonText_Next)"> 415 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?> 421 <!-- Note: The order of publishing the event(s) here is important. --> 422 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?> 423 <Publish Event="NewDialog" Value="VBoxWarnPythonDlg"><![CDATA[((&VBoxPython=3) AND (VBOX_PYTHON_DEPS_INSTALLED="0"))]]></Publish> 424 <?endif?> 425 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?> 416 426 <Publish Event="NewDialog" Value="VBoxWarnDisconNetIfacesDlg"><![CDATA[(&VBoxNetworkFlt=3)]]></Publish> 417 427 <Publish Event="NewDialog" Value="VBoxVerifyReadyDlg"><![CDATA[(&VBoxNetworkFlt<3)]]></Publish> 418 428 <?else ?> 419 429 <Publish Event="NewDialog" Value="VBoxVerifyReadyDlg">1</Publish> 420 430 <?endif?> 421 431 </Control> 422 432 <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" … … 478 488 <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.ButtonText_Yes)"> 479 489 <Publish Event="NewDialog" Value="VBoxVerifyReadyDlg">1</Publish> 490 </Control> 491 492 <!-- Canceling will bring up a confirmation dialog ('SpawnDialog' attribute) --> 493 <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.ButtonText_No)"> 494 <Publish Event="SpawnDialog" Value="VBoxCancelDlg">1</Publish> 495 </Control> 496 497 </Dialog> 498 499 <Dialog Id="VBoxWarnPythonDlg" Width="370" Height="270" Title="[ProductName] [Setup]" NoMinimize="yes"> 500 501 <!-- The wizard has a bitmap as background. The source is defined as a property below. --> 502 <Control Id="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" TabSkip="no" Text="[DialogBitmap]" /> 503 504 <!-- Title text drawn on the background --> 505 <Control Id="Title" Type="Text" X="135" Y="20" Width="220" Height="60" Transparent="yes" NoPrefix="yes"> 506 <Text>{\DlgWarnPython}!(loc.WarnPythonDlg_Title)</Text> 507 </Control> 508 509 <Control Id="Title2" Type="Text" X="135" Y="40" Width="220" Height="60" Transparent="yes" NoPrefix="yes"> 510 <Text>{\DlgWarnPython}!(loc.WarnPythonDlg_Title2)</Text> 511 </Control> 512 513 <!-- Text saying what we gonna do --> 514 <Control Id="Description" Type="Text" X="135" Y="70" Width="220" Height="130" Transparent="yes" NoPrefix="yes"> 515 <Text>!(loc.WarnPythonDlg_Desc)</Text> 516 </Control> 517 518 <Control Id="Description2" Type="Text" X="135" Y="115" Width="220" Height="130" Transparent="yes" NoPrefix="yes"> 519 <Text>!(loc.WarnPythonDlg_Desc2)</Text> 520 </Control> 521 522 <Control Id="Description3" Type="Text" X="135" Y="160" Width="220" Height="130" Transparent="yes" NoPrefix="yes"> 523 <Text>!(loc.WarnPythonDlg_Question)</Text> 524 </Control> 525 526 <!-- And a line for looking nice... --> 527 <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" /> 528 529 <!-- Build number text drawn left bottom --> 530 <Control Id="Build" Type="Text" X="20" Y="247" Width="220" Height="10" Transparent="yes" NoPrefix="yes"> 531 <Text>[Version_text] $(var.Property_Version)</Text> 532 </Control> 533 534 <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.ButtonText_Yes)"> 535 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?> 536 <Publish Event="NewDialog" Value="VBoxWarnDisconNetIfacesDlg"><![CDATA[(&VBoxNetworkFlt=3)]]></Publish> 537 <Publish Event="NewDialog" Value="VBoxVerifyReadyDlg"><![CDATA[(&VBoxNetworkFlt<3)]]></Publish> 538 <?else ?> 539 <Publish Event="NewDialog" Value="VBoxVerifyReadyDlg">1</Publish> 540 <?endif?> 480 541 </Control> 481 542 … … 1011 1072 <TextStyle Id="DlgInvalidSerial" FaceName="Verdana" Size="13" Bold="yes" Red="255" /> 1012 1073 <TextStyle Id="DlgWarnDisconNetIfaces" FaceName="Verdana" Size="13" Bold="yes" Red="255" /> 1074 <TextStyle Id="DlgWarnPython" FaceName="Verdana" Size="13" Bold="yes" /> 1013 1075 1014 1076 <!-- The UIText table contains the localized versions of some of the strings used in the user interface. … … 1176 1238 <Custom Action="ca_OriginalTargetDir" After="FileCost"><![CDATA[(NOT INSTALLDIR) AND (NOT EXISTINGINSTALLDIR)]]></Custom> 1177 1239 <Custom Action="ca_DefaultTargetDir" After="FileCost"><![CDATA[NOT Installed AND (NOT INSTALLDIR) AND EXISTINGINSTALLDIR]]></Custom> 1178 1240 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?> 1241 <Custom Action="ca_IsPythonInstalled" After="FileCost" /> 1242 <Custom Action="ca_ArePythonAPIDepsInstalled" After="ca_IsPythonInstalled" /> 1243 <?endif?> 1179 1244 <FindRelatedProducts Suppress="no">1</FindRelatedProducts> 1180 1245 -
trunk/src/VBox/Installer/win/VBoxMergePythonCA.wxi
r82970 r86782 17 17 xmlns:difxapp="http://schemas.microsoft.com/wix/DifxAppExtension"> 18 18 19 <CustomAction Id="ca_IsPythonInstalled" BinaryKey="VBoxInstallHelper" DllEntry="IsPythonInstalled" Execute="immediate" Return="check" Impersonate="no"/> 20 <CustomAction Id="ca_ArePythonAPIDepsInstalled" BinaryKey="VBoxInstallHelper" DllEntry="ArePythonAPIDepsInstalled" Execute="immediate" Return="check" Impersonate="no"/> 19 21 <CustomAction Id="ca_InstallPythonAPI" BinaryKey="VBoxInstallHelper" DllEntry="InstallPythonAPI" Execute="deferred" Return="check" Impersonate="no"/> 20 22 <CustomAction Id="ca_InstallPythonAPIArgs" Property="ca_InstallPythonAPI" Value="[msm_VBoxPythonFolder]" Execute="immediate"/> -
trunk/src/VBox/Installer/win/VBoxMergePythonSeq.wxi
r82970 r86782 17 17 xmlns:difxapp="http://schemas.microsoft.com/wix/DifxAppExtension"> 18 18 19 <Custom Action="ca_IsPythonInstalled" Before="ca_ArePythonAPIDepsInstalled" > 20 <![CDATA[1]]> 21 </Custom> 22 <Custom Action="ca_ArePythonAPIDepsInstalled" Before="LaunchConditions" > 23 <![CDATA[1]]> 24 </Custom> 25 19 26 <Custom Action="ca_InstallPythonAPIArgs" Before="ca_InstallPythonAPI" > 20 27 <?if $(env.VBOX_WITH_MSM_INSTALL) = "yes" ?> -
trunk/src/VBox/Installer/win/VirtualBox.wxs
r84945 r86782 561 561 562 562 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?> 563 <Feature Id="VBoxPython" Title="VirtualBox Python 2.xSupport" Level="1"563 <Feature Id="VBoxPython" Title="VirtualBox Python Support" Level="1" 564 564 Description="!(loc.VB_Python)" 565 565 ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器