2012-03-21 6 views
2

Итак, я просто взял Inno сегодня, чтобы попытаться получить базовый установщик для игры Unity. Узел установки Inno работает отлично, к сожалению, деинсталлятор не работает вообще. Я прошел через документы и трал Google, и не видел много этой конкретной проблемы. В документах Inno рекомендуется использовать раздел [UninstallDelete], который я пробовал, с аналогичными результатами.Inno Installer не удаляет файлы

[Setup] 
AppName=Installable Files 
AppVersion=1.0 
DefaultDirName={pf}\Installable Files 
DefaultGroupName=Installable Files        
UninstallDisplayIcon={app}\File.exe 
Compression=lzma2 
UninstallFilesDir={app}\uninst 
SolidCompression=yes 

[Files] 
Source: "File.exe"; DestDir: "{app}"; DestName: "File.exe" 
Source: "Files\*"; DestDir: "{app}\Files"; Flags: recursesubdirs 
Source: "Files\README.txt"; DestDir: "{app}"; Flags: isreadme 

[Icons] 
Name: "{group}\Files"; Filename: "{app}\File.exe"; WorkingDir: "{app}" 

[UninstallDelete] 
Type: filesandordirs; Name: "{pf}\Files" 

Выход из кода выше говорит, что удаление всех файлов в подкаталогах, но не может удалить каталог ж/(145) код ошибки, а затем утверждает процесс unistallation удалось. Это то же самое, я запускаю деинсталлятор из компилятора Inno Setup, uninst000.exe или из программы «Установка и удаление программ» в Windows.

Установщик/деинсталлятор, который фактически не удаляет что-либо, раздражает, поэтому, если есть какое-либо понимание этой проблемы, это было бы здорово.

(Пожалуйста, обратите внимание, что я также пытался удалить отдельные файлы под [UninstallDelete], такие как Type: files; Name: "{app}\LGODemo.exe" с нулевым успехом)

EDIT: After Install

After Uninstall

Как изображения показывают, ни один из файлы удаляются из-за ошибки 145. Затем деинсталлятор повторяет попытку и, по-видимому, удаляет папки, за исключением того, что они все еще существуют, и файл по-прежнему выполняется на 100%. Я только добавил раздел UninstallDelete, когда файл деинсталляции был неудачным.

Извините за ссылки на Dropbox, не могу опубликовать imgs, пока у меня не появится лучший реп.

+0

Хм, я никогда не использую '[UninstallDelete]' раздел в моем InnoSetup сценария и до сих пор деинсталлятор InnoSetup работает правильно. Интересно, что не так в вашем скрипте InnoSetup ... –

+0

Возможно, вы должны поместить двойные кавычки между этими строками с пробелами в разделе '[Setup]' ... просто мое предположение для решения ... –

+0

Или вы можете определить переменную для представления повторяющейся строки: например, '#define MyTitleName" Life Goes On Demo "и использовать идентификатор' {#MyTitleName} 'следующим образом:' DefaultDirName = {pf} \ {# MyTitleName } '. Делая это, вы можете избежать ошибки из-за невидимых пробелов в этих повторяющихся строках. –

ответ

1

Если вы не сказали об этом иначе, Inno удалит все, что он установил.

Кроме того, выполнение явного [UninstallDelete] в папке может иметь неблагоприятные побочные эффекты, особенно если у вас неправильный путь ({app} vs {pf}\blah). Представьте, что кто-то установил ваше приложение в C:\Windows\? Вы только что уничтожили установку Windows!

+0

Спасибо, и я прочитал это в документах, тем не менее, моя проблема в том, что Inno не удаляет любые файлы независимо от того, что нужно, если, как вы уже упоминали, я сказал, что это не так, и я уверен, что нет. Если бы UninstallDelete работал в моем тестировании, я бы конкретно указал папки/файлы. Спасибо за ответ, хотя. –

0

я получил то, что вы делаете неправильно, вы должны удалить

UninstallFilesDir={app}\uninst часть по умолчанию {app}

И не использовать [UninstallDelete] .с вышеуказанным способом он должен удалить все файлы. Если вы хотите использовать [UninstallDelete] затем использовать

[UninstallDelete]
Имя: {приложение} \; Тип: filesandordirs

Вместо

[UninstallDelete] Type: filesandordirs; Name: "{pf}\Files"

TRY IT

+0

Нет. Не пытайтесь. Здесь не было никаких проблем. Вы должны использовать раздел '[UninstallDelete]' только для файлов, которые не были установлены установщиком (что здесь не было). И путь к деинсталлятору ничего не меняет. Кроме того, вам не нужно указывать значение 'UninstallFilesDir = {app}' как '{app}' значение по умолчанию. – TLama

+0

@TLama Я знаю, что значение по умолчанию - '{app}'. Я использую 'UninstallFilesDir = {app}', потому что он использует 'UninstallFilesDir = {app} \ uninst'. Я просто дал ему эту идею. – Kushal