Итак, у меня есть установщик 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 видеть подключенные сетевые диски.