Как удалить inno setup с компьютера
Я новичок в настройке Inno. Застрял на одном вопросе-как настроить удалить кусок, чтобы удалить все файлы, папки, подпапки, и даже новые файлы/папки и т. д. создано приложением (другими словами, 100% удаление приложения и связанных с ним файлов).
я охотился здесь и также на своем форуме, и пришел пустой. Может ли кто-нибудь указать мне документ, FAQ и т. д. относительно того, как это сделать?
обновление
Спасибо за все отзывы до сих пор (очень высокий). Похоже, я могу удалить все, используя *.* директивы в разделе "удаление". Также похоже, что все против этого. таким образом, вопрос теперь становится (мне интересно, должен ли это быть совершенно новый вопрос) есть ли способ во время удаления, что мы можем спросить пользователя " вы хотите удалить все файлы проекта, связанные с этим приложением?"и если они ответят "да", запустите uninstall *.* кусок?
вы, вероятно, должны были сделать это совершенно новым вопросом, но я отвечу на ваш обновленный вопрос здесь. Взгляните на раздел "Pascal Scripting: Uninstall Code" в документации по настройке Inno.
чтобы привести пример условного удаления файлов данных в процессе удаления:
но в зависимости от количества вещей, которые вы должны убирать вы, может быть, лучше создать специальную вспомогательную программу, которая часть установки, и которая может быть выполнена во время удаления приложения (с помощью записи в [UninstallRun]).
Я думаю, рекомендуется указать, что удалить в разделе удалить. Причина в том, что, если по какой-либо причине пользователь решил поместить свои собственные файлы в каталог установки, который они не хотели удалять, или сохранить данные, которые они могли бы захотеть сохранить (возможно, они удаляют, чтобы установить более новую версию?)
это, как говорится, я не знаю, что такое скрипт, но если вы используете ISTool (настоятельно рекомендую), просто добрался до удаления Раздел удалить и добавить вещи, которые вы хотите удалить. Он должен представить все возможные варианты в хорошем GUI и создать сценарий для вас.
Edit: пример из документации по настройке Inno:
но они сильно вы не делаете что-то вроде
примечание: не соблазняйтесь использовать подстановочный знак здесь, чтобы удалить все файлы в в . Я сильно не рекомендую делать это за двоих причины. Во-первых, пользователи, как правило, Не ценят их файлы данных они помещаются в каталог приложений удалены без предупреждения (они могут только удалить его, потому что они хотите переместить его на другой диск, например.) Лучше оставить его до конечных пользователей, чтобы вручную удалить они, если хотят. Также, если пользователь получилось установить программу в неверный каталог по ошибке (по например, C:\WINDOWS) а затем отправился в удалить его там может быть катастрофическим последствия. Так еще раз, не делай этого!
есть случаи, когда требуется удалить файлы, которые изначально не были записаны на диск пользователя во время установки. Один из таких случаев, когда у вас есть приложение, которое обновляется при запуске. Новые файлы могут быть добавлены на диск таким образом, которые не являются частью деинсталлятора.
в этом случае я предлагаю вам создать файл "манифест исправления", который хранит текущую запись о том, какие файлы должны быть в каталоге . Ниже пример кода это считывается из файла в dir под названием ' patch_manifest.txt'
и образец patch_manifest.txt
Примечание: порядок строк в patch_manifest важен. Все файлы в каталоге должны сначала быть перечислены, а затем каталоги-каталоги, которые не пусты, не могут быть удалены.
ваше приложение должно поставляться с patch_manifest, и patch_manifest должен обновляться с каждым патчем. Сделать это часть вашего процесса сборки, так что вы не забудьте обновить его!
очень важно, чтобы вы не удаляли подстановочный знак (.), даже если вы запросите пользователя. Деинсталляторы имеют повышенные привилегии, которые потенциально могут уничтожить компьютер пользователя. Возьмем случай пользователя, который случайно установил приложение в C:\Windows\ или C:\Program файлы.
еще одна хорошая идея-проверить, что файл на самом деле" ваш файл", выполнив проверку MD5 до за удаление. В этом случае ваш patch_manifest.txt будет включать не только относительный путь к файлу, но и контрольную сумму MD5.
это должно сделать трюк:
вы не можете использовать InnoSetup для удаления всего, что он не установил, и вы не должны этого делать. Я, например, был бы очень недоволен, если бы я установил приложение, ввел много данных, а затем решил использовать что-то другое, что будет читать эти данные из вашего приложения. Если ваша деинсталляция убила всю работу, которую я уже сделал, у меня может возникнуть соблазн пойти искать вас. И, вероятно, не для того, чтобы купить тебе чашку кофе.
или рассмотрим случай, когда я установить вашу применение в процессе оценки нескольких. Я пробую приложения и продолжаю возвращаться к вашим, потому что мне это нравится немного больше, и каждый раз я ввожу больше данных. Затем я решил ничего не делать некоторое время, поэтому я удаляю все тестовые приложения. Через неделю я решаю, что мне нужно использовать ваше приложение сейчас, и я переустановил его. Упс! Вся работа, которую я делал, тестируя его, что я теперь хотел использовать, ушла.
выше почему, когда вы удаляете приложения, оно оставляет позади все, что вы созданные в папки, как файлы конфигурации, файлы данных и т. д. Он не знает, что вы хотите сделать с ними, поэтому он оставляет их в покое.
разве это не значение по умолчанию, если вы не указываете "uninsneveruninstall" для записи?
edit-Извините, я не понял, что вы говорите о недавно созданных файлах данных.
как настроить uninstall piece для удаления всех файлов, папок, подпапок и даже новых файлов/папок и т. д., созданных приложением (другими словами, a 100% удаление приложения и связанных с ним файлов).
Я охотился здесь, а также на их форуме, и ничего не нашел. Может ли кто-нибудь указать мне на документ, FAQ и т. д. относительно того, как это сделать?
UPDATE
Спасибо за все отзывы до сих пор (очень здорово). Таким образом, похоже, что я могу удалить все, используя директиву *.* В разделе удаления. Кроме того, похоже, что все советуют против этого. Таким образом, теперь возникает вопрос (мне интересно, должен ли это быть совершенно новый вопрос), есть ли способ во время удаления, чтобы мы могли спросить пользователя: "вы хотите удалить все файлы проекта, связанные с этим приложением?" и если они ответят YES, запустить uninstall *.* piece?
Я создаю установщик для своего приложения Windows через Inno Setup. Само приложение записывает некоторые данные конфигурации в домашнюю папку пользователя, в свой собственный подкаталог. Теперь во время удаления я хочу позволить пользователю выбрать опцию удаления и этой папки (которая изначально.
Как настроить группу безопасности Windows в рамках установки Inno Setup? Кажется, я не могу придумать правильный текст для google, чтобы понять это. Возможно, намека на то, что искать, будет достаточно.
Я думаю, что рекомендуемый подход заключается в том, чтобы указать, что нужно удалить в разделе удаления. Рассуждение таково: что, если по какой-либо причине пользователь решил поместить свои собственные файлы в каталог установки, который он не хотел удалять, или сохраненные данные, которые он, возможно, захочет сохранить (возможно, они удаляют, чтобы установить более новую версию?)
Тем не менее, я не знаю, что это за сценарий, но если вы используете ISTool (настоятельно рекомендую), просто перейдите в раздел удаления удаления и добавьте то, что вы хотите удалить. Он должен представить все возможные варианты в приятном GUI и сгенерировать сценарий для вас.
Изменить: Пример из документации по настройке Inno:
Но они настоятельно не советуют вам делать что-то вроде
NOTE: Не поддавайтесь искушению использовать здесь подстановочный знак для удаления всех файлов в каталоге . Я решительно рекомендую не делать этого по двум причинам. Во-первых, пользователи обычно не ценят наличие своих файлов данных они помещают в каталог приложений , удаленный без предупреждения (они могут удаляйте его только потому, что они хотят переместить его, например, на другой диск). Лучше оставить это на усмотрение конечных пользователей, чтобы вручную удалить их, если они захотят. Кроме того, если пользователь случайно установил программу в неправильный каталог по ошибке ( например, C:\WINDOWS), а затем перешел в удаление его может привести к катастрофическим последствиям. Так ЧТО ЕЩЕ раз, НЕ ДЕЛАЙ ЭТОГО!
Вероятно, вам следовало бы сделать этот вопрос совершенно новым, но я также отвечу на ваш обновленный вопрос здесь. Взгляните на раздел "Pascal Scripting: Uninstall Code" в документации по настройке Inno.
Чтобы привести пример, как условно удалить файлы данных в рамках процесса удаления:
Но в зависимости от количества вещей, которые вам нужно очистить, вам, возможно, лучше создать специальную вспомогательную программу, которая является частью установки и которая может быть выполнена во время удаления приложения (используя запись в разделе [UninstallRun] ).
Inno Setup хранит файл Uninstall log unins000.dat в каталоге установки приложения. Этот файл содержит список всех файлов, которые должны быть удалены при удалении приложения. Когда новая версия приложения устанавливается поверх старой, Inno Setup просто добавляет любые новые файлы в Uninstall Log.
Я пытаюсь автоматизировать наш процесс подписания кода в Inno Setup. К сожалению, у нас есть довольно строгий протокол распределения .pfx и паролей, и только один человек в проекте может иметь к нему доступ. Это не было бы проблемой само по себе, если бы все установки были скомпилированы на этой.
Бывают случаи, когда требуется удалить файлы, которые изначально не были записаны на диск пользователя во время установки. Один из таких случаев-это когда у вас есть приложение, которое обновляется при запуске. Таким образом, на диск могут быть добавлены новые файлы, которые не являются частью деинсталлятора.
В этом случае я предлагаю вам создать файл "patch manifest", который хранит текущую запись о том, какие файлы должны находиться в каталоге . Ниже приведен пример кода, который считывается из файла в директории с именем 'patch_manifest.txt'.
и образец patch_manifest.txt
Примечание: Порядок строк в patch_manifest важен. Сначала должны быть перечислены все файлы в каталоге, а затем каталог - каталоги, которые не являются пустыми, не могут быть удалены.
Ваше приложение должно поставляться с patch_manifest, и patch_manifest должен обновляться с каждым патчем. Сделайте это частью вашего процесса сборки, чтобы вы не забыли обновить его!
Очень важно, чтобы вы не удаляли по подстановочному знаку ( . ), даже если вы предлагаете пользователю. Деинсталляторы имеют повышенные привилегии, которые потенциально могут уничтожить компьютер пользователя. Возьмем случай пользователя, который случайно установил ваше приложение в файлы C:\Windows\ или C:\Program.
Еще одна хорошая идея-проверить, что файл на самом деле "your file", выполнив проверку MD5 перед его удалением. В этом случае ваш patch_manifest.txt будет включать не только относительный путь к файлу, но и контрольную сумму MD5.
Или рассмотрим случай, когда я устанавливаю ваше приложение в процессе оценки нескольких. Я пробую приложения и продолжаю возвращаться к вашим, потому что мне это нравится немного больше, и каждый раз я ввожу больше данных. Затем я решаю какое-то время ничего не делать, поэтому удаляю все тестовые приложения. Через неделю я решаю, что мне все-таки нужно использовать ваше приложение, и переустанавливаю его. Упс! Вся работа, которую я проделал, тестируя его, которую я теперь хотел использовать, ушла.
Вот почему, когда вы удаляете приложение, оно оставляет после себя все, что вы создали в папках, например файлы конфигурации, файлы данных и т. Д. Он не знает, что вы хотите, чтобы он сделал с ними, поэтому он оставляет их в покое.
Я новичок в Inno Setup. Застрял в одной проблеме - как настроить часть удаления для удаления всех файлов, папок, подпапок и даже новых файлов /папок и т. Д., Созданных приложением (другими словами, 100% удаление приложения и связанных файлов). р>
Я охотился здесь, а также на их форуме, и пришел пустой. Кто-нибудь может указать мне документ, FAQ и т. Д. Относительно того, как это сделать?
UPDATE
Спасибо за все отзывы (очень круто). Похоже, я могу удалить все, используя директиву *. * В разделе удаления. Также похоже, что все советуют против этого. Таким образом, теперь вопрос становится (мне интересно, должен ли это быть совершенно новый вопрос), есть ли способ во время удаления, который мы можем задать пользователю: «Вы хотите удалить все файлы проекта, связанные с этим?». приложение?' и если они ответят ДА, запустить деинсталляцию *. * piece?
Возможно, вам следовало сделать этот вопрос совершенно новым, но я также отвечу на ваш обновленный вопрос здесь. Ознакомьтесь с разделом «Сценарии Pascal: код удаления» в документации по настройке Inno.
Чтобы привести пример того, как условно удалить файлы данных в процессе удаления:
Но в зависимости от количества вещей, которые вам нужно почистить, может быть лучше создать специальную вспомогательную программу, которая является частью установки и которая может быть выполнена во время удаления приложения (используя запись в [UninstallRun] ).
Я думаю, что рекомендуемый подход - указать, что нужно удалить в разделе удаления. Причина заключается в том, что если пользователь по какой-либо причине решил поместить в каталог установки свои собственные файлы, которые он не хотел удалять, или сохранил данные, которые он может захотеть сохранить (возможно, их удаление означает установку более новой версии? )
При этом я не знаю, что это за сценарий, но если вы используете ISTool (очень рекомендую), просто зайдите в раздел «Удалить удаление» и добавьте то, что вы хотите удалить. Он должен представить все возможные варианты в хорошем графическом интерфейсе и сгенерировать скрипт для вас.
Изменить: пример из документации по установке Inno:
Но они сильно не делают что-то вроде
ПРИМЕЧАНИЕ. Не пытайтесь использовать здесь подстановочный знак для удаления всех файлов в каталог . Я настоятельно рекомендую не делать этого на двоих причины. Во-первых, пользователи обычно не ценю наличие их файлов данных они помещают в каталог приложений удаляются без предупреждения (они могут только удалить его, потому что они хочу переместить его на другой диск, например). Лучше оставить до конечных пользователей, чтобы удалить вручную их, если они хотят. Также, если пользователь случилось установить программу в неправильный каталог по ошибке (для например, C: \ WINDOWS) и затем удалить его может быть катастрофическим последствия. Итак, еще раз, не делай этого!
В некоторых случаях требуется удалить файлы, которые изначально не были записаны на диск пользователя во время установки. Один из таких случаев - когда у вас есть приложение, которое обновляется при запуске. Таким способом на диск можно добавлять новые файлы, которые не являются частью деинсталлятора.
В этом случае я предлагаю вам создать файл "патча-манифеста", в котором хранится текущая запись о том, какие файлы должны находиться в каталоге . Ниже приведен пример кода, который читает из файла в каталоге с именем 'patch_manifest.txt'
и образец файла patch_manifest.txt
Примечание. Порядок строк в patch_manifest важен. Сначала должны быть перечислены все файлы в каталоге, а затем каталог - непустые каталоги удалить нельзя.
Ваше приложение должно поставляться с patch_manifest, а patch_manifest должен обновляться с каждым патчем. Сделайте это частью вашего процесса сборки, чтобы не забыть обновить его!
Очень важно, чтобы вы не удаляли по шаблону (. ), даже если вы предлагаете пользователю. У деинсталляторов есть повышенные привилегии, которые потенциально могут уничтожить компьютер пользователя. Возьмите случай с пользователем, который случайно установил ваше приложение в C: \ Windows \ или C: \ Program Files.
Еще одна хорошая идея - проверить, что файл на самом деле является «вашим файлом», выполнив проверку MD5 перед его удалением. В этом случае ваш patch_manifest.txt будет включать не только относительный путь к файлу, но и контрольную сумму MD5.
Это должно сработать:
Вы не можете использовать InnoSetup для удаления чего-либо, что не было установлено, и вам не следует этого делать. Я, например, был бы очень недоволен, если бы я установил приложение, ввел много данных, а затем решил использовать вместо этого что-то еще, что будет считывать эти данные из вашего приложения. Если твоя деинсталляция убила всю работу, которую я уже сделал, я мог бы соблазниться, чтобы найти тебя. И, вероятно, не купить вам чашку кофе.
Или рассмотрим случай, когда я устанавливаю ваше приложение в процессе оценки нескольких. Я пробую приложения и продолжаю возвращаться к вашим, потому что они мне нравятся немного лучше, и каждый раз я ввожу больше данных. Затем я решаю ничего не делать, поэтому удаляю все тестовые приложения. Через неделю я решаю, что теперь мне нужно использовать ваше приложение, и переустанавливаю его. К сожалению! Вся работа, которую я выполнял, проверяя то, что я теперь хотел использовать, ушла.
Вышесказанное объясняет, почему при удалении приложения оно оставляет после себя все, что вы создали в папках, например, файлы конфигурации, файлы данных и т. д. Оно не знает, что вы хотите с ним делать, поэтому оно оставляет их одни.
Разве это не значение по умолчанию, если вы не указываете "uninsneveruninstall" для записи?
edit - Извините, я не понял, что вы говорите о недавно созданных файлах данных.
Я хотел удалить gData.dat , созданный во время выполнения в установленной папке
и у меня все работало нормально
Добавьте элемент удаления файла /папки в Inno Setup studio. Или напрямую используйте скрипт следующим образом.
how to configure the uninstall piece to remove all files, folders, subfolders, and even new files/folders etc. created by application (in other words, a 100% removal of the application and associated files).
I hunted around here and also on their forum, and came up empty. Can anyone point me to a document, FAQ etc. regarding how to do this?
UPDATE
Thanks for all the feedback so far (very awesome). So it looks like I can delete everything using the *.* directive in the uninstall section. Also looks like everyone is advising against it. So the question now becomes (I am wondering if this should be a totally new question) is there a way during the uninstall that we can ask the user 'Do you want to remove all project files associated with this application?' and if they answer YES, to run the uninstall *.* piece?
6,312 17 17 gold badges 57 57 silver badges 77 77 bronze badges9 Answers 9
I think the recommended approach is to specify what to remove in the uninstall section. The reasoning is that what if for whatever reason the user decided to put their own files in your installation directory that they didn't want removed, or saved data that they might want to keep around (maybe they uninstall is to install a newer version?)
That being said, I don't know offhand what the script is, but if you use ISTool (highly recommend) just got to the Uninstall Delete section and add things you want removed. It should present all the possible options in a nice GUI and generate the script for you.
Edit: An example from the Inno Setup documentation:
But they strongly you don't do something like
29.8k 23 23 gold badges 109 109 silver badges 172 172 bronze badgesNOTE: Don't be tempted to use a wildcard here to delete all files in the directory. I strongly recommend against doing this for two reasons. First, users usually don't appreciate having their data files they put in the application directory deleted without warning (they might only be uninstalling it because they want to move it to a different drive, for example). It's better to leave it up to the end users to manually remove them if they want. Also, if the user happened to install the program in the wrong directory by mistake (for example, C:\WINDOWS) and then went to uninstall it there could be disastrous consequences. So again, DON'T DO THIS!
so you are saying there is no way to specify that files added AFTER the installation get deleted?
You can, you just need to tell it what those files or folders are. .. and if I do not know what those file/folders are ahead of time (which I do not), then I assume as Ken White has proclaimed, that there is no way to do that?You should probably have made this a totally new question, but I'll answer your updated question here as well. Have a look at the section "Pascal Scripting: Uninstall Code" in the Inno Setup Documentation.
To give an example how to conditionally delete data files as part of the uninstallation process:
But depending on the amount of stuff you need to clean up you might be better off to create a special helper program that is part of the installation, and which can be executed during the uninstallation of the app (using an entry in the [UninstallRun] section).
31.3k 6 6 gold badges 84 84 silver badges 124 124 bronze badges Seems like nobody clicked "NO" at "Do you want to delete all data files?". This does not work! Just tested the procedure CurUninstallStepChanged in UninstallCodeExample1.iss This is very dangerous. It will recursively delete the content of a symlinked folder or reparse point. I advise a) to not use this function without a modification to the Attributes check and b) Innosetup has a method DelTree() , which is simply better and more secure. It also lifts any read-only attributes, before deletion and "does not step into" symlinks, but removes them.There are cases to want to delete files which were not initially written to the user's disk at time of installation. One of these cases is when you have an application that updates itself when it is started. New files can be added to the disk in this manner which are not a part of the uninstaller.
For this case I suggest that you create a "patch manifest" file which keeps a running record of what files should be in the directory. Find below a sample of code that reads from a file in the dir called 'patch_manifest.txt'
and a sample of the patch_manifest.txt
Note: The order of the lines in the patch_manifest is important. All files within a directory should first be listed followed by the directory - directories which are not empty cannot be delete.
Your application should be shipped with a patch_manifest and the patch_manifest should be updated with every patch. Make this part of your build process so you don't forget to update it!
It is very important that you do not delete by wildcard (.) even if you prompt the user. Uninstaller's have elevated privileges which could potentially destroy a user's computer. Take the case of a user who accidentally installed your application to C:\Windows\ or C:\Program Files.
Читайте также: