Используя NSIS при установке более новой версии программного обеспечения, начиная с определенной более старой версии (например, 3.01.00), я автоматически обновляю ее до более новой версии, удаляя старую версию и устанавливая более новую версию, как показано ниже :
Примечание. Здесь моя старая версия установщика программного обеспечения использует WIX, а более новая установщик использует NULLSOFT
ReadRegStr $R1 HKLM "SOFTWARE\Millinnium\3.01.00" "InstallPath"
ReadRegStr $R2 HKLM "SOFTWARE\Millinnium\3.02.00" "InstallPath"
${If} $R1 != ""
MessageBox MB_YESNO|MB_ICONQUESTION "$(UninstallPrevVer)" IDYES noUninstOld
Abort
noUninstOld:
ExecWait '"MsiExec.exe" /X{8ED262EE-FC73-47A9-BB86-D92223246881} /qb!'
${ElseIf} $R2 != ""
MessageBox MB_YESNO|MB_ICONQUESTION "$(UninstallPrevVer)" IDYES noUninstOld
Abort
noUninstOld:
ExecWait '"MsiExec.exe" /X{8ED262EE-FC73-47A9-BB86-D92223246881} /qb!'
${EndIf}
Но если у меня гораздо более старые версии, например, <3.01.00 (т. Е. 3.0 или 3.0.0.1 или 2.0 или меньше), я хотел бы отобразить общее сообщение, показывающее, что необходимо удалить существующую версию вручную перед установкой более новой. версия. </p>
Есть ли какой-нибудь способ, которым мы можем прочитать ключ номера версии реестра в общем виде?
или мне нужно следовать для каждой версии, как показано ниже?
ReadRegStr $R1 HKLM "SOFTWARE\Millinnium\3.0" "InstallPath"
ReadRegStr $R2 HKLM "SOFTWARE\Millinnium\3.0.0.1" "InstallPath"
ReadRegStr $R2 HKLM "SOFTWARE\Millinnium\2.0" "InstallPath"