Reactos

[APPWIZ] Shortcut: Rename if there is a conflict (#6556)

Follow-up to #6550. Avoid same name
overwriting.
JIRA issue: CORE-5866
- Rename the filename if there was duplicate.
- Simplify CreateShortcut function.
- Rename IDC_SHORTCUT_LOCATION as
IDC_LINK_LOCATION to resolve name conflict
with shell32/shresdef.h.

authored by

Katayama Hirofumi MZ and committed by
GitHub
c07eb9fb 0a587b9c

+89 -102
+60 -73
dll/cpl/appwiz/createlink.c
··· 15 15 #include <shellapi.h> 16 16 #include <strsafe.h> 17 17 #include <shlwapi_undoc.h> // for PathFindOnPathExW 18 + #include "../../win32/shell32/shresdef.h" // for IDS_NEWITEMFORMAT and IDS_LNK_FILE 18 19 19 20 BOOL 20 21 IsShortcut(HKEY hKey) ··· 75 76 BOOL 76 77 CreateShortcut(PCREATE_LINK_CONTEXT pContext) 77 78 { 78 - IShellLinkW *pShellLink, *pSourceShellLink; 79 + IShellLinkW *pShellLink; 79 80 IPersistFile *pPersistFile; 80 81 HRESULT hr; 81 - WCHAR Path[MAX_PATH]; 82 - LPWSTR lpExtension; 83 82 84 - /* get the extension */ 85 - lpExtension = PathFindExtensionW(pContext->szTarget); 83 + hr = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_ALL, &IID_IShellLinkW, (void**)&pShellLink); 84 + if (FAILED(hr)) 85 + return FALSE; 86 86 87 - if (pContext->pidlTarget) 87 + hr = IUnknown_QueryInterface(pShellLink, &IID_IPersistFile, (void**)&pPersistFile); 88 + if (FAILED(hr)) 88 89 { 89 - Path[0] = UNICODE_NULL; 90 + IUnknown_Release(pShellLink); 91 + return FALSE; 90 92 } 91 - else if (IsExtensionAShortcut(lpExtension)) 93 + 94 + if (IsExtensionAShortcut(PathFindExtensionW(pContext->szTarget))) 92 95 { 93 - hr = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_ALL, &IID_IShellLinkW, (void**)&pSourceShellLink); 94 - 95 - if (FAILED(hr)) 96 - return FALSE; 97 - 98 - hr = IUnknown_QueryInterface(pSourceShellLink, &IID_IPersistFile, (void**)&pPersistFile); 99 - if (FAILED(hr)) 100 - { 101 - IUnknown_Release(pSourceShellLink); 102 - return FALSE; 103 - } 104 - 105 96 hr = pPersistFile->lpVtbl->Load(pPersistFile, (LPCOLESTR)pContext->szTarget, STGM_READ); 106 - IUnknown_Release(pPersistFile); 107 - 108 - if (FAILED(hr)) 109 - { 110 - IUnknown_Release(pSourceShellLink); 111 - return FALSE; 112 - } 113 - 114 - hr = IShellLinkW_GetPath(pSourceShellLink, Path, _countof(Path), NULL, 0); 115 - IUnknown_Release(pSourceShellLink); 116 - 117 - if (FAILED(hr)) 118 - { 119 - return FALSE; 120 - } 121 97 } 122 98 else 123 99 { 124 - StringCchCopyW(Path, _countof(Path), pContext->szTarget); 125 - } 100 + if (pContext->pidlTarget) 101 + pShellLink->lpVtbl->SetIDList(pShellLink, pContext->pidlTarget); 102 + else 103 + pShellLink->lpVtbl->SetPath(pShellLink, pContext->szTarget); 126 104 127 - hr = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_ALL, 128 - &IID_IShellLinkW, (void**)&pShellLink); 105 + if (pContext->szArguments[0]) 106 + pShellLink->lpVtbl->SetArguments(pShellLink, pContext->szArguments); 129 107 130 - if (hr != S_OK) 131 - return FALSE; 108 + if (pContext->szDescription[0]) 109 + pShellLink->lpVtbl->SetDescription(pShellLink, pContext->szDescription); 110 + } 132 111 133 - if (pContext->pidlTarget) 134 - pShellLink->lpVtbl->SetIDList(pShellLink, pContext->pidlTarget); 135 - else 136 - pShellLink->lpVtbl->SetPath(pShellLink, Path); 112 + if (SUCCEEDED(hr)) 113 + hr = pPersistFile->lpVtbl->Save(pPersistFile, pContext->szLinkName, TRUE); 137 114 138 - if (pContext->szArguments[0]) 139 - pShellLink->lpVtbl->SetArguments(pShellLink, pContext->szArguments); 140 - 141 - if (pContext->szDescription[0]) 142 - pShellLink->lpVtbl->SetDescription(pShellLink, pContext->szDescription); 143 - 144 - hr = IUnknown_QueryInterface(pShellLink, &IID_IPersistFile, (void**)&pPersistFile); 145 - if (hr != S_OK) 146 - { 147 - IUnknown_Release(pShellLink); 148 - return FALSE; 149 - } 150 - 151 - hr = pPersistFile->lpVtbl->Save(pPersistFile, pContext->szLinkName, TRUE); 152 115 IUnknown_Release(pPersistFile); 153 116 IUnknown_Release(pShellLink); 154 - return (hr == S_OK); 117 + return SUCCEEDED(hr); 155 118 } 156 119 157 120 BOOL ··· 258 221 pContext = (PCREATE_LINK_CONTEXT) ppsp->lParam; 259 222 SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pContext); 260 223 PropSheet_SetWizButtons(GetParent(hwndDlg), 0); 261 - SHAutoComplete(GetDlgItem(hwndDlg, IDC_SHORTCUT_LOCATION), SHACF_DEFAULT); 224 + SHAutoComplete(GetDlgItem(hwndDlg, IDC_LINK_LOCATION), SHACF_DEFAULT); 262 225 break; 263 226 case WM_COMMAND: 264 227 { 265 228 switch (LOWORD(wParam)) 266 229 { 267 - case IDC_SHORTCUT_LOCATION: 230 + case IDC_LINK_LOCATION: 268 231 { 269 232 if (HIWORD(wParam) == EN_CHANGE) 270 233 { ··· 275 238 pContext->pidlTarget = NULL; 276 239 } 277 240 278 - if (SendDlgItemMessage(hwndDlg, IDC_SHORTCUT_LOCATION, WM_GETTEXTLENGTH, 0, 0)) 241 + if (SendDlgItemMessage(hwndDlg, IDC_LINK_LOCATION, WM_GETTEXTLENGTH, 0, 0)) 279 242 PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_NEXT); 280 243 else 281 244 PropSheet_SetWizButtons(GetParent(hwndDlg), 0); ··· 302 265 SHGetPathFromIDListW(pidllist, szPath); 303 266 304 267 if (PathFileExistsW(szPath) && !PathIsRelativeW(szPath)) 305 - SetDlgItemTextW(hwndDlg, IDC_SHORTCUT_LOCATION, szPath); 268 + SetDlgItemTextW(hwndDlg, IDC_LINK_LOCATION, szPath); 306 269 else 307 - SetDlgItemTextW(hwndDlg, IDC_SHORTCUT_LOCATION, szDisplayName); 270 + SetDlgItemTextW(hwndDlg, IDC_LINK_LOCATION, szDisplayName); 308 271 309 - SendDlgItemMessageW(hwndDlg, IDC_SHORTCUT_LOCATION, EM_SETSEL, 0, -1); 272 + SendDlgItemMessageW(hwndDlg, IDC_LINK_LOCATION, EM_SETSEL, 0, -1); 310 273 311 274 if (pContext->pidlTarget) 312 275 CoTaskMemFree(pContext->pidlTarget); ··· 319 282 lppsn = (LPPSHNOTIFY) lParam; 320 283 if (lppsn->hdr.code == PSN_SETACTIVE) 321 284 { 322 - SetDlgItemTextW(hwndDlg, IDC_SHORTCUT_LOCATION, pContext->szTarget); 285 + SetDlgItemTextW(hwndDlg, IDC_LINK_LOCATION, pContext->szTarget); 323 286 } 324 287 else if (lppsn->hdr.code == PSN_WIZNEXT) 325 288 { 326 - GetDlgItemTextW(hwndDlg, IDC_SHORTCUT_LOCATION, pContext->szTarget, _countof(pContext->szTarget)); 289 + GetDlgItemTextW(hwndDlg, IDC_LINK_LOCATION, pContext->szTarget, _countof(pContext->szTarget)); 327 290 StrTrimW(pContext->szTarget, L" \t"); 328 291 ExpandEnvironmentStringsW(pContext->szTarget, szPath, _countof(szPath)); 329 292 ··· 362 325 !PathFileExistsW(szPath)) 363 326 { 364 327 /* Not found */ 365 - SendDlgItemMessageW(hwndDlg, IDC_SHORTCUT_LOCATION, EM_SETSEL, 0, -1); 328 + SendDlgItemMessageW(hwndDlg, IDC_LINK_LOCATION, EM_SETSEL, 0, -1); 366 329 367 330 LoadStringW(hApplet, IDS_CREATE_SHORTCUT, szDesc, _countof(szDesc)); 368 331 LoadStringW(hApplet, IDS_ERROR_NOT_FOUND, szPath, _countof(szPath)); ··· 411 374 LPPROPSHEETPAGEW ppsp; 412 375 PCREATE_LINK_CONTEXT pContext; 413 376 LPPSHNOTIFY lppsn; 414 - WCHAR szText[MAX_PATH]; 377 + WCHAR szText[MAX_PATH], szPath[MAX_PATH]; 415 378 WCHAR szMessage[128]; 416 379 417 380 switch(uMsg) ··· 447 410 pContext = (PCREATE_LINK_CONTEXT) GetWindowLongPtr(hwndDlg, DWLP_USER); 448 411 if (lppsn->hdr.code == PSN_SETACTIVE) 449 412 { 450 - /* TODO: Use shell32!PathCleanupSpec instead of DoConvertNameForFileSystem */ 413 + /* Remove invalid characters */ 451 414 DoConvertNameForFileSystem(pContext->szDescription); 415 + PathCleanupSpec(NULL, pContext->szDescription); 416 + 417 + /* Is it empty? (rare case) */ 418 + if (!pContext->szDescription[0]) 419 + { 420 + HMODULE hShell32 = GetModuleHandleW(L"shell32.dll"); 421 + LoadStringW(hShell32, IDS_NEWITEMFORMAT, szText, _countof(szText)); 422 + LoadStringW(hShell32, IDS_LNK_FILE, szMessage, _countof(szMessage)); 423 + StringCchPrintfW(pContext->szDescription, _countof(pContext->szDescription), 424 + szText, szMessage); 425 + } 426 + 427 + /* Build a path from szOldFile */ 428 + StringCchCopyW(szText, _countof(szText), pContext->szOldFile); 429 + PathRemoveFileSpecW(szText); 430 + 431 + /* Rename duplicate if necessary */ 432 + PathAddExtensionW(pContext->szDescription, 433 + (IsInternetLocation(pContext->szTarget) ? L".url" : L".lnk")); 434 + PathYetAnotherMakeUniqueName(szPath, szText, NULL, pContext->szDescription); 435 + StringCchCopyW(pContext->szDescription, _countof(pContext->szDescription), 436 + PathFindFileNameW(szPath)); 437 + PathRemoveExtensionW(pContext->szDescription); 438 + 452 439 SetDlgItemTextW(hwndDlg, IDC_SHORTCUT_NAME, pContext->szDescription); 453 440 SendDlgItemMessageW(hwndDlg, IDC_SHORTCUT_NAME, EM_SETSEL, 0, -1); 454 441 SetFocus(GetDlgItem(hwndDlg, IDC_SHORTCUT_NAME)); ··· 483 470 484 471 /* change extension if any */ 485 472 PathRemoveExtensionW(pContext->szLinkName); 486 - StringCchCatW(pContext->szLinkName, _countof(pContext->szLinkName), L".url"); 473 + PathAddExtensionW(pContext->szLinkName, L".url"); 487 474 488 475 if (!CreateInternetShortcut(pContext)) 489 476 { ··· 500 487 501 488 /* change extension if any */ 502 489 PathRemoveExtensionW(pContext->szLinkName); 503 - StringCchCatW(pContext->szLinkName, _countof(pContext->szLinkName), L".lnk"); 490 + PathAddExtensionW(pContext->szLinkName, L".lnk"); 504 491 505 492 if (!CreateShortcut(pContext)) 506 493 {
+1 -1
dll/cpl/appwiz/lang/bg-BG.rc
··· 26 26 BEGIN 27 27 LTEXT "Вълшебникът ви помага за създаването на препратки към местни или мрежови приложения, файлове, папки, компютри или адреси в интернет.", -1, 120, 15, 200, 32 28 28 LTEXT "Напишете местоположението на предмета:", -1, 120, 50, 160, 10 29 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 29 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 30 30 PUSHBUTTON "Обзор...", IDC_SHORTCUT_BROWSE, 275, 65, 55, 15, ES_LEFT 31 31 LTEXT "Натиснете ""Напред"" за продължаване.", -1, 120, 100, 160, 10 32 32 END
+1 -1
dll/cpl/appwiz/lang/cs-CZ.rc
··· 31 31 BEGIN 32 32 LTEXT "Tento průvodce pomůže s vytvořením zástupců na místní\nnebo síťové programy, soubory, složky, počítače nebo\ninternetové adresy.", -1, 120, 15, 200, 30 33 33 LTEXT "Zadejte umístění položky:", -1, 120, 50, 120, 10 34 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 34 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 35 35 PUSHBUTTON "Procházet...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 36 36 LTEXT "Pokračujte kliknutím na Další.", -1, 120, 97, 162, 10 37 37 END
+1 -1
dll/cpl/appwiz/lang/de-DE.rc
··· 26 26 BEGIN 27 27 LTEXT "Mit diesem Assistenten können Sie Verknüpfungen mit lokalen oder vernetzten Programmen, Dateien, Ordnern, Computern oder Internetadressen erstellen.", -1, 120, 15, 200, 30 28 28 LTEXT "&Geben Sie den Speicherort des Elements ein:", -1, 120, 50, 150, 10 29 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 29 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 30 30 PUSHBUTTON "&Durchsuchen...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 31 31 LTEXT "Klicken Sie auf Weiter, um fortzufahren.", -1, 120, 97, 162, 10 32 32 END
+1 -1
dll/cpl/appwiz/lang/el-GR.rc
··· 26 26 BEGIN 27 27 LTEXT "Αυτός ο οδηγός σας βοηθάει να δημιουργήσετε συντομεύσεις σε τοπικά προγράμματα ή προγράμματα δικτύου, αρχεία, φακέλους, υπολογιστές ή διευθύνσεις στο διαδίκτυο.", -1, 120, 15, 200, 30 28 28 LTEXT "Εισάγετε την θέση του στοιχείου:", -1, 120, 50, 120, 10 29 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 29 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 30 30 PUSHBUTTON "Αναζήτηση...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 31 31 LTEXT "Πατήστε 'Επόμενο' για να συνεχίσετε.", -1, 120, 97, 162, 10 32 32 END
+1 -1
dll/cpl/appwiz/lang/en-US.rc
··· 26 26 BEGIN 27 27 LTEXT "This wizard helps you to create shortcuts to local or\nnetwork programs, files, folders, computers, or Internet\naddresses.", -1, 120, 15, 200, 30 28 28 LTEXT "Type the location of the item:", -1, 120, 50, 120, 10 29 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 29 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 30 30 PUSHBUTTON "Browse...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 31 31 LTEXT "Click Next to continue.", -1, 120, 97, 162, 10 32 32 END
+1 -1
dll/cpl/appwiz/lang/es-ES.rc
··· 36 36 BEGIN 37 37 LTEXT "Este asistente le ayudará a crear accesos directos a programas locales o en red, archivos, carpetas, equipos, o direcciones de Internet.", -1, 120, 15, 200, 30 38 38 LTEXT "Escriba la ubicación del elemento:", -1, 120, 50, 120, 10 39 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 39 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 40 40 PUSHBUTTON "Examinar...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 41 41 LTEXT "Presione Siguiente para continuar.", -1, 120, 97, 162, 10 42 42 END
+1 -1
dll/cpl/appwiz/lang/et-EE.rc
··· 33 33 BEGIN 34 34 LTEXT "Selle viisardi abil saate luua otseteid kohalike või\nvõrguprogrammide, failide, kaustada, arvutite või\nInterneti-aadresside juurde.", -1, 120, 15, 200, 30 35 35 LTEXT "Tippige üksuse asukoht:", -1, 120, 50, 120, 10 36 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 36 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 37 37 PUSHBUTTON "Sirvi...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 38 38 LTEXT "Jätkamiseks klõpsake nuppu Edasi.", -1, 120, 97, 162, 10 39 39 END
+1 -1
dll/cpl/appwiz/lang/fr-FR.rc
··· 26 26 BEGIN 27 27 LTEXT "Cet assistant vous aide à créer des raccourcis vers des programmes, des fichiers, des dossiers, des ordinateurs,\nou des adresses Internet locaux ou sur le réseau.", -1, 120, 15, 200, 30 28 28 LTEXT "Entrez la localisation de l'élément :", -1, 120, 50, 120, 10 29 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 29 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 30 30 PUSHBUTTON "Parcourir...", IDC_SHORTCUT_BROWSE, 272, 65, 60, 15, ES_LEFT 31 31 LTEXT "Cliquez sur Suivant pour continuer.", -1, 120, 97, 162, 10 32 32 END
+1 -1
dll/cpl/appwiz/lang/he-IL.rc
··· 27 27 BEGIN 28 28 LTEXT "This wizard helps you to create shortcuts to local or\nnetwork programs, files, folders, computers, or Internet\naddresses.", -1, 120, 15, 200, 30 29 29 LTEXT "הקלד את מיקום הפריט:", -1, 120, 50, 120, 10 30 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 30 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 31 31 PUSHBUTTON "סייר...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 32 32 LTEXT "לחץ הבא כדי להמשיך.", -1, 120, 97, 162, 10 33 33 END
+1 -1
dll/cpl/appwiz/lang/hu-HU.rc
··· 30 30 BEGIN 31 31 LTEXT "Ez a varázsló parancsikonok létrehozásában nyújt segítséget,\nhelyi vagy hálózati programokhoz, fájlokhoz, mappákhoz,\nszámítógépekhez vagy internetes címekhez.", -1, 120, 15, 200, 30 32 32 LTEXT "Írja be az elem helyét:", -1, 120, 50, 120, 10 33 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 33 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 34 34 PUSHBUTTON "Tallózás...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 35 35 LTEXT "Kattintson a tovább gombra a folytatáshoz.", -1, 120, 97, 162, 10 36 36 END
+1 -1
dll/cpl/appwiz/lang/id-ID.rc
··· 26 26 BEGIN 27 27 LTEXT "Penuntun ini membantu membuat pintasan pada lokal atau\njaringan berupa program, berkas, folder, Komputer, atau Alamat Internet.", -1, 120, 15, 200, 30 28 28 LTEXT "Ketik lokasi butir:", -1, 120, 50, 120, 10 29 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 29 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 30 30 PUSHBUTTON "Cari...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 31 31 LTEXT "Klik Lanjut untuk meneruskan.", -1, 120, 97, 162, 10 32 32 END
+1 -1
dll/cpl/appwiz/lang/it-IT.rc
··· 26 26 BEGIN 27 27 LTEXT "Questo wizard permette la creazione di collegamenti verso programmi locali o di rete, file, cartella, computer, o\nindirizzi Internet.", -1, 120, 15, 200, 30 28 28 LTEXT "Digitare la posizione:", -1, 120, 50, 120, 10 29 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 29 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 30 30 PUSHBUTTON "Sfoglia...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 31 31 LTEXT "Premere Avanti per continuare.", -1, 120, 97, 162, 10 32 32 END
+1 -1
dll/cpl/appwiz/lang/ja-JP.rc
··· 26 26 BEGIN 27 27 LTEXT "このウィザードは、ローカルまたはネットワークプログラム、ファイル、フォルダー、コンピューター、またはインターネット アドレスへのショートカットを作成するのを助けます。", -1, 120, 15, 200, 30 28 28 LTEXT "項目の位置を入力して下さい:", -1, 120, 50, 120, 10 29 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 29 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 30 30 PUSHBUTTON "参照...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 31 31 LTEXT "次へをクリックすると続行します。", -1, 120, 97, 162, 10 32 32 END
+1 -1
dll/cpl/appwiz/lang/no-NO.rc
··· 26 26 BEGIN 27 27 LTEXT "Denne veiviseren vil hjelper deg å lage snarvei til en lokal eller\nnettverk programmer, filer, mapper, datamaskiner, eller internett\nadresse.", -1, 120, 15, 200, 30 28 28 LTEXT "Velg din lagring plassering:", -1, 120, 50, 120, 10 29 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 29 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 30 30 PUSHBUTTON "Bla gjennom...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 31 31 LTEXT "Trykk på neste for å fortsette.", -1, 120, 97, 162, 10 32 32 END
+1 -1
dll/cpl/appwiz/lang/pl-PL.rc
··· 36 36 BEGIN 37 37 LTEXT "Ten program pomoże ci stworzyć skróty do lokalnych lub sieciowych programów, plików, katalogów, komputerów, bądź adresów Internetowych.", -1, 120, 15, 200, 30 38 38 LTEXT "Wpisz ścieżkę dostępu do obiektu:", -1, 120, 50, 120, 10 39 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 39 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 40 40 PUSHBUTTON "Przeglądaj...", IDC_SHORTCUT_BROWSE, 274, 65, 55, 15, ES_LEFT 41 41 LTEXT "Kliknij Dalej, aby kontynuować.", -1, 120, 97, 162, 10 42 42 END
+1 -1
dll/cpl/appwiz/lang/pt-BR.rc
··· 28 28 BEGIN 29 29 LTEXT "Este assitente irá ajudá-lo a criar atalhos para\nprogramas, arquivos, pastas, computadores ou endereços\nde Internet, ambos locais ou de rede.", -1, 120, 15, 200, 30 30 30 LTEXT "Digite a localização do item:", -1, 120, 50, 120, 10 31 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 31 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 32 32 PUSHBUTTON "Procurar...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 33 33 LTEXT "Pressione Próximo para prosseguir.", -1, 120, 97, 162, 10 34 34 END
+1 -1
dll/cpl/appwiz/lang/pt-PT.rc
··· 28 28 BEGIN 29 29 LTEXT "Este assitente irá ajudá-lo a criar atalhos para\nprogramas, arquivos, pastas, computadores ou endereços\nde Internet, ambos locais ou de rede.", -1, 120, 15, 200, 30 30 30 LTEXT "Digite a localização do item:", -1, 120, 50, 120, 10 31 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 31 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 32 32 PUSHBUTTON "Procurar...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 33 33 LTEXT "Pressione Próximo para prosseguir.", -1, 120, 97, 162, 10 34 34 END
+1 -1
dll/cpl/appwiz/lang/ro-RO.rc
··· 34 34 BEGIN 35 35 LTEXT "Acest expert vă va ajuta în crearea unei scurtături\ncătre adrese din Internet, calculatoare, dosare, fișiere\nlocale sau din rețea.", -1, 120, 15, 200, 30 36 36 LTEXT "Scrieți adresa elementului:", -1, 120, 50, 120, 10 37 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 37 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 38 38 PUSHBUTTON "Spe&cificare…", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 39 39 LTEXT "Apăsați Înainte pentru a continua.", -1, 120, 97, 162, 10 40 40 END
+1 -1
dll/cpl/appwiz/lang/ru-RU.rc
··· 26 26 BEGIN 27 27 LTEXT "Этот мастер поможет создать ярлык для локальных или\nсетевых программ, файлов, папок, компьютеров или\nИнтернет-адресов.", -1, 120, 15, 200, 30 28 28 LTEXT "Выберите местоположение элемента:", -1, 120, 50, 120, 10 29 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 29 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 30 30 PUSHBUTTON "Обзор...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 31 31 LTEXT "Щелкните ""Далее"" для продолжения.", -1, 120, 97, 162, 10 32 32 END
+1 -1
dll/cpl/appwiz/lang/sk-SK.rc
··· 30 30 BEGIN 31 31 LTEXT "Tento sprievodca Vám pomôže vytvoriť odkazy na miestne alebo\nsieťové programy, súbory, priečinky, počítače, alebo internetové\nadresy.", -1, 120, 15, 200, 30 32 32 LTEXT "Zadajte umiestnenie položky:", -1, 120, 50, 120, 10 33 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 33 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 34 34 PUSHBUTTON "&Prehľadávať...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 35 35 LTEXT "Kliknite na tlačidlo Ďalej pre pokračovanie.", -1, 120, 97, 162, 10 36 36 END
+1 -1
dll/cpl/appwiz/lang/sq-AL.rc
··· 30 30 BEGIN 31 31 LTEXT "Ky magjistar ju ndihmon për të krijuar shkurtesat për të lokale ose\nprograme networku, dokumenta, dosje, kompjutra, ose adresa\nInterneti.", -1, 120, 15, 200, 30 32 32 LTEXT "Shkruaj vendndodhjen e sendit:", -1, 120, 50, 120, 10 33 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 33 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 34 34 PUSHBUTTON "Shfleto...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 35 35 LTEXT "Klikoni Next për të vazhduar.", -1, 120, 97, 162, 10 36 36 END
+1 -1
dll/cpl/appwiz/lang/tr-TR.rc
··· 28 28 BEGIN 29 29 LTEXT "Bu sihirbaz, yerel ya da ağdaki programlara, dosyalara,\ndizinlere, bilgisayarlara ve İnternet adreslerine\nkısayollar oluşturmanıza yardımcı olur.", -1, 120, 15, 200, 30 30 30 LTEXT "Ögenin konumunu yazınız:", -1, 120, 50, 120, 10 31 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 31 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 32 32 PUSHBUTTON "&Göz At...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 33 33 LTEXT "Devam etmek için ""İleri""ye tıklayınız.", -1, 120, 97, 162, 10 34 34 END
+1 -1
dll/cpl/appwiz/lang/uk-UA.rc
··· 34 34 BEGIN 35 35 LTEXT "Цей майстер допомагає створити ярлик, який указує на\nлокальні або мережні програми, файли, папки, комп'ютери\nабо адреси в Інтернеті.", -1, 120, 15, 200, 30 36 36 LTEXT "Укажіть розташування об'єкта:", -1, 120, 50, 120, 10 37 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 37 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 38 38 PUSHBUTTON "Огляд...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 39 39 LTEXT "Щоб продовжити установку, натисніть кнопку ""Далі"".", -1, 120, 97, 162, 10 40 40 END
+1 -1
dll/cpl/appwiz/lang/zh-CN.rc
··· 35 35 BEGIN 36 36 LTEXT "此向导可帮助您创建本地或网络程序、文件、文件夹、计算机或 Internet 地址的快捷方式。", -1, 120, 15, 200, 30 37 37 LTEXT "请输入项目位置:", -1, 120, 50, 120, 10 38 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 38 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 39 39 PUSHBUTTON "浏览...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 40 40 LTEXT "点击“下一步”继续。", -1, 120, 97, 162, 10 41 41 END
+1 -1
dll/cpl/appwiz/lang/zh-HK.rc
··· 34 34 BEGIN 35 35 LTEXT "這個精靈協助您建立本地或網路程式、檔案、目錄、電腦或互聯網地址的捷徑。", -1, 120, 15, 200, 30 36 36 LTEXT "輸入項目位置:", -1, 120, 50, 120, 10 37 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 37 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 38 38 PUSHBUTTON "瀏覽...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 39 39 LTEXT "按[下一步]繼續。", -1, 120, 97, 162, 10 40 40 END
+1 -1
dll/cpl/appwiz/lang/zh-TW.rc
··· 35 35 BEGIN 36 36 LTEXT "此精靈幫助您建立本地或網路程式、檔案、目錄、電腦或網際網路地址的捷徑。", -1, 120, 15, 200, 30 37 37 LTEXT "輸入項目位置:", -1, 120, 50, 120, 10 38 - EDITTEXT IDC_SHORTCUT_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 38 + EDITTEXT IDC_LINK_LOCATION, 120, 65, 150, 15, ES_LEFT | ES_AUTOHSCROLL 39 39 PUSHBUTTON "瀏覽...", IDC_SHORTCUT_BROWSE, 272, 65, 55, 15, ES_LEFT 40 40 LTEXT "按[下一步]繼續。", -1, 120, 97, 162, 10 41 41 END
+3 -3
dll/cpl/appwiz/resource.h
··· 37 37 #define IDS_DWL_FAILED 17 38 38 39 39 /* Controls */ 40 - #define IDC_SHORTCUT_LOCATION 107 41 - #define IDC_SHORTCUT_BROWSE 108 42 - #define IDC_SHORTCUT_NAME 109 40 + #define IDC_LINK_LOCATION 107 41 + #define IDC_SHORTCUT_BROWSE 108 42 + #define IDC_SHORTCUT_NAME 109 43 43 #define IDC_STARTMENU_TREE 110 44 44 #define IDC_REMOVE_ENTRIES 111 45 45