PermissionError: [Errno 13] Разрешение отклонено после установки с помощью innosetup.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 PermissionError: [Errno 13] Разрешение отклонено после установки с помощью innosetup.

Сообщение Anonymous »

Я создаю программу на Python, которая должна создать и изменить файл config.json. Все работает хорошо, пока я не соберу его, не создам установочный .exe-файл с помощью innosetup, а затем не установлю его в папку программы. Я не уверен, что для управления файлами и папками по этому пути вам нужны специальные разрешения, но я не знаю, как предоставить их с помощью innosetup. Ниже приведен мой файл innosetup:

Код: Выделить всё

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "My Program"
#define MyAppVersion "2.0"
#define MyAppPublisher "Me"
#define MyAppExeName "main.exe"
#define MyAppAssocName MyAppName + " File"
#define MyAppAssocExt ".myp"
#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt

[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{8CC8270A-A721-4074-8F3B-61E1AABBFCD9}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={autopf}\{#MyAppName}
ChangesAssociations=yes
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
PrivilegesRequiredOverridesAllowed=dialog
OutputBaseFilename=mysetup
Compression=lzma
SolidCompression=yes
WizardStyle=modern

[Languages]
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "D:\Programmazione\ytDownloader\output\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Program Files\ffmpeg\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Registry]
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".myp"; ValueData: ""

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

Я создаю файл и управляю им непосредственно в моем основном коде Python таким образом, чтобы он создавался непосредственно в пути, где находится основной файл, поэтому, если он находится в «Программных файлах» папка, которую он создает в ней. Вот почему мне нужно понять, как управлять разрешениями в innosetup. Вот как:

Код: Выделить всё

class App():
def __init__(self):
super().__init__()

self.cfgFile = "config.json"
self.cfg = self.load_cfg()

def load_cfg(self) -> dict:
data = {}
if os.path.exists(self.cfgFile):
with open(self.cfgFile, "r") as f:
data = json.load(f)

if len(data) < 7:

data = {
"audio_path": os.getcwd(),
"video_path": os.getcwd(),
"threads": "20",
"formato_audio": "mp3",
"formato_video": "mp4",
"tipo": "audio",
"last_link": ""
}
data = {
"my_data": "",
}
self.save_cfg(data)

return data

def save_cfg(self, data = None) -> None:
data = self.cfg if data == None else data

with open(self.cfgFile, "w") as f:
json.dump(data, f, indent=4)
Я пробовал читать документацию по innosetup, но я не такой уж эксперт и не нашел ничего полезного, только несколько строк, которые не очень понятны, и я не хочу рискнуть все испортить

Подробнее здесь: https://stackoverflow.com/questions/790 ... -innosetup
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Контейнер Docker завершился с кодом 1: PermissionError: [Errno 13] Разрешение отклонено
    Гость » » в форуме Python
    0 Ответы
    76 Просмотры
    Последнее сообщение Гость
  • PermissionError: [Errno 13] Ошибка отказа в разрешении при использовании tkintervideo в Python
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • PermissionError: [Errno 13] Ошибка отказа в разрешении при использовании tkintervideo в Python
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • PermissionError: [Errno 13] Ошибка отказа в разрешении при использовании tkintervideo в Python
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • PermissionError: [Errno 13] Ошибка отказа в разрешении при использовании tkintervideo в Python
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»