[OTR-dev] Pidgin-otr 3.2.1-2 (win32) - (Un)installer bug

Ariel Poliak ariel.p at hostdime.com
Thu Aug 16 01:22:53 EDT 2012


While preparing an MSI for enterprise deployment of pidgin-otr, I found 
that the (un)installer does not honor the NSIS "/S" switch for 
unattended (un)installation, causing the uninstall confirmation prompt 
to appear when running 'pidgin-otr-uninst.exe' and other prompts when 
performing upgrades or errors occur.

This does not cause issues during the initial installation of 
pidgin-otr, but subsequent updates will fail due to there being no user 
interface available when the MSI is uninstalled via Group Policy (after 
Windows boots, before users are given the ability to log on, MSIs for 
old versions are removed and the new versions' MSIs are then installed 
[no in-place updates are performed]).

The culprits lie on the following lines within 
'packaging/windows/pidgin-otr.nsi':
======
127  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully 
removed from your computer."
131  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you 
want to completely remove $(^Name) and all of its components?" IDYES +2
162  MessageBox MB_OK|MB_ICONINFORMATION "Could not find pidgin plugin 
directory, pidgin-otr.dll not uninstalled!" IDOK ok
180        MessageBox MB_OK|MB_ICONINFORMATION "pidgin-otr.dll is busy. 
Probably Pidgin is still running. Please delete 
$PidginDir\plugins\pidgin-otr.dll manually."
194  MessageBox MB_OK|MB_ICONINFORMATION "Failed to find Pidgin 
installation."
207        MessageBox MB_OK|MB_ICONEXCLAMATION  "pidgin-otr was already 
found on your system and will first be uninstalled"
216                MessageBox MB_OK|MB_ICONEXCLAMATION  "Uninstall 
failed or aborted"
238    MessageBox MB_RETRYCANCEL "pidgin-otr.dll is busy. Please close 
Pidgin (including tray icon) and try again" IDCANCEL cancel
======
These are all the MessageBox calls that are not commented out within the 
.nsi file.

There are two ways to address this:
1) add the "/SD" value (see 
http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.4.15 ) to each 
MessageBox call, to specify what option to choose by default when the 
installer is running silently
(This would be good for MessageBox-es that offer a choice that alter the 
script execution path, a safe default would be to choose the button 
which aborts the [un]installation process*)

and/or

2) Put a IfSilent (see 
http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.4.12 ) jump before 
each MessageBox call (with a proper jump value to preserve the execution 
path) to skip the display of the message and continue script execution.
(This would be good for MessageBox-es that simply display information 
and make no script branching decisions)

* Alternatively the method described in 
http://nsis.sourceforge.net/Docs/Chapter4.html#4.12 can be used to 
provide the MessageBox answer desired by the user for each possible choice.

-- 
Ariel Poliak
Network and Security Operations
Active Directory Administrator
HostDime.com, Inc.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 1721 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.cypherpunks.ca/pipermail/otr-dev/attachments/20120816/c88fa805/attachment.bin>


More information about the OTR-dev mailing list