Windows Installer созданный из VS2008, содержит C# класс Installer.
Если до запуска удаления уже установленного пакета приложения его основная директория (содержащая также C# Installer class dll с определенными custom actions) стерта или переименована, то при запуске Uninstall выдается следующее сообщение об ошибке.
Можно ли избежать его, даже если директория удалена?
Re: Windows Installer созданный из VS2008 - Uninstall proble
Здравствуйте, Yehuda, Вы писали:
Y>Windows Installer созданный из VS2008, содержит C# класс Installer. Y>Если до запуска удаления уже установленного пакета приложения его основная директория (содержащая также C# Installer class dll с определенными custom actions) стерта или переименована, то при запуске Uninstall выдается следующее сообщение об ошибке.
Y>Можно ли избежать его, даже если директория удалена?
А тебе надо запускать твою DLL при деинсталляции? То есть, ты делаешь что-то в методе Uninstall твоего Installer-класса?
Если да, то это, очевидно, проблема, которая никак не может быть решена. Как ты запустишь то, что удалили?
Если же нет, то можно просто убрать запуск твоей DLL при деинсталляции (удали в проекте вызов твоей CustomAction на Uninstall)
Но вообще проблема IMHO надуманная. Если это тебе такой "баг" прислали, можешь смело посылать
Re[2]: Windows Installer созданный из VS2008 - Uninstall pro
Здравствуйте, bnk, Вы писали:
bnk>А тебе надо запускать твою DLL при деинсталляции? То есть, ты делаешь что-то в методе Uninstall твоего Installer-класса? bnk>Если да, то это, очевидно, проблема, которая никак не может быть решена. Как ты запустишь то, что удалили? bnk>Если же нет, то можно просто убрать запуск твоей DLL при деинсталляции (удали в проекте вызов твоей CustomAction на Uninstall)
bnk>Но вообще проблема IMHO надуманная. Если это тебе такой "баг" прислали, можешь смело посылать
Да, надо запускать эту DLL при деинсталляции.
Нужно просто, чтобы она не запускалась, если ее нет.
Это программа большого банка, его техникам, осуществляющим поддержку у клиентов, иногда вместо удаления текущей версии перед установкой новой версии для разных проверок удобнее не удалять текущую версию полностью, а переименовывать основную директорию аппликации с тем, чтобы можно было легко переходить с одной версии на другую.
Я разработчик самой аппликации, а с Windows Installer вынужден возиться постольку-поскольку.
Так что послать нельзя и не к кому.
Кроме того, здравый смысл программиста подсказывает, что из-за исключения не должно падать все приложение (в данном случае Windows Installer).
Должно быть разумное решение.
Re[3]: Windows Installer созданный из VS2008 - Uninstall pro
Здравствуйте, Yehuda, Вы писали:
Y>Это программа большого банка, его техникам, осуществляющим поддержку у клиентов, иногда вместо удаления текущей версии перед установкой новой версии для разных проверок удобнее не удалять текущую версию полностью, а переименовывать основную директорию аппликации с тем, чтобы можно было легко переходить с одной версии на другую.
Y>Кроме того, здравый смысл программиста подсказывает, что из-за исключения не должно падать все приложение (в данном случае Windows Installer). Y>Должно быть разумное решение.
Могу предложить "спрятать" твою DLL содержащую Custom Action в место, в котором хитрые техники ее не найдут чтобы удалить или переименовать.
То есть, ставить ее не в директорию куда ставится продукт, а куда-то в другое место.
Ну или использовать какой-нибудь более продвинутый инструмент для создания пакетов Windows Installer, нежели Setup Project,
чтобы иметь возможность игнорировать такие ошибки.
Re: Windows Installer созданный из VS2008 - Uninstall proble
Здравствуйте, Yehuda, Вы писали:
Y>Windows Installer созданный из VS2008, содержит C# класс Installer. Y>Если до запуска удаления уже установленного пакета приложения его основная директория (содержащая также C# Installer class dll с определенными custom actions) стерта или переименована, то при запуске Uninstall выдается следующее сообщение об ошибке.
Y>
Y>Можно ли избежать его, даже если директория удалена?
По хорошему нужно создать CA который не имеет отношения к рабочей проге и хранить эту DLL в Binary Table, тогда тебе ни какие удаления файлов проги не страшны будут.
Эта DLL будет извлекаться из MSI дистрибутива при запуске, класться в %TEMP% с хитрым именем и после работы удаляться.
Re[2]: Windows Installer созданный из VS2008 - Uninstall pro
Здравствуйте, seryal, Вы писали:
S>По хорошему нужно создать CA который не имеет отношения к рабочей проге и хранить эту DLL в Binary Table, тогда тебе ни какие удаления файлов проги не страшны будут. S>Эта DLL будет извлекаться из MSI дистрибутива при запуске, класться в %TEMP% с хитрым именем и после работы удаляться.
Точно, только вот Visual Studio Setup Project такое (CA в Binary) не поддерживает.
Re[3]: Windows Installer созданный из VS2008 - Uninstall pro
Здравствуйте, bnk, Вы писали:
bnk>Здравствуйте, seryal, Вы писали:
S>>По хорошему нужно создать CA который не имеет отношения к рабочей проге и хранить эту DLL в Binary Table, тогда тебе ни какие удаления файлов проги не страшны будут. S>>Эта DLL будет извлекаться из MSI дистрибутива при запуске, класться в %TEMP% с хитрым именем и после работы удаляться.
bnk>Точно, только вот Visual Studio Setup Project такое (CA в Binary) не поддерживает.
Тогда думаю есть смысл перейти на Wix.
Re[4]: Windows Installer созданный из VS2008 - Uninstall pro
Здравствуйте, seryal, Вы писали:
bnk>>Точно, только вот Visual Studio Setup Project такое (CA в Binary) не поддерживает.
S>Тогда думаю есть смысл перейти на Wix.
Не, по мо-моему, смысла куда-то переходить нету. Задача-то, походу, была "одноразовая".
К тому же, проблема, на мой взгляд, все же скорее административная (техники-злодеи, порочная практика обновления софта, не-IT организация).