LINUX.ORG.RU

Wine прописывает на себя ассоциации на некоторые файлы


1

2

Сабж. Это утомляет, когда винище на себя прописывает gif, jpeg и просто любой файл без mime типа. Багтрекер файна читал, там советуют убить winemenubuilder, но тогда пропадает прописывание установленный в wine программ в меню. Может, есть какие патчи? Или иное решение? Буду благодарен за помощь.

PS: сносить вайн - не решение.

а нафига он вообще нужен? этот вайн?

ktk ★★★★
()

без отключенного winemenubuilder разве что после каждого запуска wine делать

~$ cd ~/.local/share/applications

~/.local/share/applications$ rm -rf ./*wine*

~/.local/share/applications$ sed -i «/wine/d» mimeinfo.cache

или посмотреть исходный код и убрать всё, что касается добавления ссылки в меню/десктоп

Punk
()

Насколько я помню он только на изображения и текстовые файлы себя прописывает, список небольшой, можно руками прописать правильные ассоциации

Deleted
()

Нет никаких решений. Авторы вайна как бы намекают, что это фича и всё работает правильно. Прописывай программы сам, если так хочется положить ссылку на дырявую программу в меню.

Deleted
()
--- a/programs/winemenubuilder/winemenubuilder.c	2011-01-03 10:42:44.000000000 +0500
+++ b/programs/winemenubuilder/winemenubuilder.c	2011-01-03 12:02:24.000000000 +0500
@@ -1855,6 +1855,26 @@
     return NULL;
 }
 
+static BOOL associations_enabled(void)
+{
+    static const WCHAR EnabledW[] = {'E','n','a','b','l','e','d',0};
+    HKEY assocKey;
+    LSTATUS ret;
+    DWORD regvalue;
+    DWORD size = sizeof(regvalue);
+
+    assocKey = open_associations_reg_key();
+    if (!assocKey)
+        return TRUE;
+
+    ret = RegGetValueW(assocKey, NULL, EnabledW, RRF_RT_REG_DWORD, NULL, &regvalue, &size);
+    if (ret)
+        regvalue = 1;
+
+    RegCloseKey(assocKey);
+    return (regvalue != 0);
+}
+
 static BOOL has_association_changed(LPCWSTR extensionW, LPCSTR mimeType, LPCWSTR progId,
     LPCSTR appName, LPCWSTR docName, LPCSTR openWithIcon)
 {
@@ -1999,6 +2018,7 @@
     if ((assocKey = open_associations_reg_key()))
     {
         int i;
+        BOOL enabled = associations_enabled();
         BOOL done = FALSE;
         for (i = 0; !done; i++)
         {
@@ -2022,8 +2042,10 @@
 
             if (ret == ERROR_SUCCESS)
             {
-                WCHAR *command;
-                command = assoc_query(ASSOCSTR_COMMAND, extensionW, openW);
+                WCHAR *command = NULL;
+                if (enabled)
+                    command = assoc_query(ASSOCSTR_COMMAND, extensionW, openW);
+
                 if (command == NULL)
                 {
                     char *desktopFile = reg_get_val_utf8(assocKey, extensionW, DesktopFileW);
@@ -2158,6 +2180,9 @@
     int i;
     BOOL hasChanged = FALSE;
 
+    if (!associations_enabled())
+        return FALSE;
+
     if (wine_rb_init(&mimeProgidTree, &winemenubuilder_rb_functions))
     {
         WINE_ERR("wine_rb_init failed\n");

После этого в regedit создать DWORD-значение Enabled, равное нулю, в ключе реестра HKCU\Software\Wine\FileOpenAssociations. При следующем запуске winemenubuilder он почистит все ассоциации типов файлов, направленные на wine, но не будет трогать меню.

AEP ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.