Windows-эквивалент MacOS.app с каталогом содержимого

Может показаться, что я просто ищу файл .exe, но я не очень хорошо знаком с окнами. Я использую pyinstaller для преобразования своих приложений в двоичные файлы. Мое приложение использует множество каталогов данных и сторонних двоичных файлов, которые я упаковываю в тот же каталог, что и исполняемый двоичный файл. Для Mac это упрощает задачу, поскольку пользователю нужно всего лишь щелкнуть MyApp.app внутри каталога приложений, который похож на ссылку на MyApp.app/Contents/MacOs/MyApp. Таким образом, MyApp никогда не нужно трогать, и все это связано с каталогами данных (также загруженными внутри MyApp.app/Contents/MacOs/).

Однако я не могу найти эквивалент Windows. Хотя Pyinstaller может создать каталог с моими каталогами данных и исполняемым файлом внутри него, если пользователь когда-либо переместит файл .exe внутри каталога, приложение никогда не будет работать (поскольку оно теряет свое относительное местоположение по отношению к каталогам данных). Есть ли такая вещь, которая может упаковать этот каталог, как в MacOS, чтобы пользователю просто нужно было щелкнуть один файл .exe, который ссылается на .exe внутри каталога, упакованного в нем? Таким образом, мы можем просто обойти один каталог. Нравится Mac.app?


person jwillis0720    schedule 03.12.2013    source источник
comment
На самом деле я не ищу псевдоним, я могу просто дать пользователю, и он может щелкнуть, и все!   -  person jwillis0720    schedule 04.12.2013


Ответы (1)


Приложения Win32 хранят данные в исполняемом файле как ресурсы, что позволяет использовать однофайловое решение, но к ним нельзя получить доступ с помощью обычных файловых API, для обработки ресурсов существует отдельный набор функций. (Это означает, что ресурсы не так полезны для вещей, которые обязательно должны быть файлами, например изображения исполняемых файлов помощников.)

Win32 также имеет альтернативные потоки данных, которые больше похожи на то, к чему вы привыкли в пакетах .app, отделяя локальный идентификатор от фактического имени файла с помощью $DATA:. Но они работают только в NTFS, теряются во многих приложениях для управления файлами, никогда не были очень популярны, и теперь Microsoft фактически устарела (за счет предотвращения доступа из приложений Магазина Windows).

person Ben Voigt    schedule 03.12.2013
comment
Таким образом, исполняемый файл в моем каталоге данных должен будет обрабатываться этим отдельным набором функций для создания нового .exe? Если да, можете ли вы указать мне на этот отдельный набор функций? - person jwillis0720; 04.12.2013
comment
@ jwillis0720: Внедрение ресурсов обычно выполняется компилятором ресурсов RC.EXE, хотя API доступа к ресурсам не предназначен только для чтения. Вот функции для доступа к ресурсам Win32: Функции ресурсов (Windows) - person Ben Voigt; 04.12.2013