Возможно, вы захотите запустить bash -v
, чтобы посмотреть, что происходит.
Я бы сделал следующее вместо игры с символическими ссылками:
RUN echo "source /usr/local/bin/virtualenvwrapper.sh" >> /etc/bash.bashrc
Сначала проверьте, что ваш файл .lnk находится в пути.
Затем (и наиболее вероятная причина вашей проблемы) проверьте, что ваше имя файла .lnk создано правильно. Чтобы убедиться, что это не похоже на «blender.lnk.lnk» (я могу воспроизвести вашу проблему, если я установил как это).
Вы также можете попытаться самостоятельно проанализировать путь к файлу ссылки. Вот пример:
void ShortcutToRealpath(LPWSTR pszString, LPSTR pdzString)
{
IShellLink *pShellLink;
HRESULT hRes;
::CoInitialize(NULL);
hRes = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&pShellLink);
if (SUCCEEDED(hRes))
{
IPersistFile *ppf;
hRes = pShellLink->QueryInterface(IID_IPersistFile, (void **)&ppf);
if (SUCCEEDED(hRes))
{
hRes = ppf->Load(pszString, TRUE);
if (SUCCEEDED(hRes))
{
pShellLink->GetPath(pdzString, MAX_PATH, NULL, 0);
}
ppf->Release();
}
pShellLink->Release();
}
::CoUninitialize();
}
Когда я собираюсь как платформа x86, путь будет проанализирован следующим образом: Вот почему ваша программа не может найти путь.
Поместите целевой файл в соответствующий файл.
РЕДАКТИРОВАТЬ:
После того, как я протестировал его с помощью инструмента MS Procmom.exe , я нашел что-то другое, если он работает как 32-битный, он покажет: [ 1114]
Значение ключа - C:\Program Files (x86)
, и если мы запустим его как 64-битный, ключ будет ссылаться на «HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ ProgramFilesDir» значение ключа C:\Program Files
. После того, как я проверил реестр: Кажется, что C:\Program Files
не отображается по умолчанию в 32-битном реестре (я не уверен насчет конкретной причины). Если вы измените ключ ProgramFilesDir
на C:\Program Files
в 32-битном реестре, проблема будет исправлена.