Golang MSI не видит подключенные диски на Windows - PullRequest
1 голос
/ 24 мая 2019

Итак, у меня есть установщик Windows msi, который я создал путем кросс-компиляции из программы golang и установил на клиентскую машину Windows. Программа отправляет данные из папки на машине с Windows в поток Kinesis. Программа отлично работает для всех файлов и папок на локальном диске C: \.
Моя проблема заключается в том, что, когда клиент использует подключенный диск NTFS («I: //, J: //, D: //»), я получаю сообщение об ошибке с

level=info msg="Ignoring target I:\\xml with invalid stat: open I:\\xml: The system cannot find the path specified."

Независимо от того, установлен ли диск (E, F, G и т. Д.), Я получаю одно и то же сообщение об ошибке. Я пробовал это на нескольких клиентах и ​​получил ту же ошибку.

Так что просто для фона - я компилирую программу, используя wine , чтобы получить ее в msi при сборке. Программа берет на себя роль ПОЛЬЗОВАТЕЛЯ СИСТЕМЫ, и я уже проверил разрешения для смонтированных каталогов (и сделал их широко открытыми - все еще не повезло). Некоторое время я бился головой об стену над этим, поэтому вопрос: у кого-нибудь еще была такая проблема?

Не знаю, насколько это поможет, но вот конкретная часть кода GO, который я использую:

p, err := filepath.Abs(t.Path)
            if err != nil {
                Logger.Infof("Ignoring invalid target path: %s, error: %s", t.Path, err)
                continue
            }
            _, err = os.Lstat(t.Path)
            if err != nil {
                Logger.Infof("Ignoring target %s with invalid stat: %s", t.Path, err)
                continue
            }
            c.targets = append(c.targets, site.WatchTarget{p, t.SrcTag})

Я пробовал os.Stat, Lstat и даже os.Open безрезультатно. Примерно в конце моей привязи на этом.

Идеальным результатом было бы предложение о любых изменениях, которые вы могли бы предложить, которые позволили бы пользователю системы из кросс-скомпилированной программы go видеть подключенные сетевые диски.

...