美文网首页
Electron打包自定义nsh(32位64位共用一套自更新)

Electron打包自定义nsh(32位64位共用一套自更新)

作者: 我叫Aliya但是被占用了 | 来源:发表于2020-10-21 17:42 被阅读0次

    由于32位电脑上装不上64位应用,所以统一使用32位。

    安装目录使用一个(不分Program Files (x86)\Program Files)

    build: {
      nsis: {
        include: './build/installer.nsh'
      },
    }
    
    ; installer.nsh
    !include "StrFunc.nsh"  ; 引用字符串处理
    ${StrRep}               ; 标注要使用的方法
    var olddir              ; 定义变量
    !macro preInit          ; 初始化前执行
        ; 读取64位注册表
        SetRegView 64
            ; 如果是(应用内自)更新
            ${if} ${isUpdated} 
                ;MessageBox MB_OK "64"
                ; olddir = 历史注册表卸载地址
                ReadRegStr $olddir HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\应用的guid" "UninstallString" 
                ; 删除64位注册表的key
                DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\应用的guid"
            ${endIf}
    
        SetRegView 32
            ${if} ${isUpdated} 
                ; "c:\Program Files (x86)\xxxx\Uninstall xxxx.exe" /allusers
                ${If} $olddir != '' 
                    ${StrRep} $olddir $olddir "\Uninstall xxxx.exe" "" 
                    ${StrRep} $olddir $olddir "/allusers" "" 
                    ${StrRep} $olddir $olddir '"' ""
                    ;MessageBox MB_OK $olddir
                    ; c:\Program Files (x86)\xxxx
                    ; 写入32位默认安装地址
                    WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "$olddir"
                ${Endif} 
            ${endIf}
    !macroend
    

    INSTALL_REGISTRY_KEY 一旦指定后,此后所有更新(自动或手动)都会向此地址安装

    (手动指定一个新地址安装,再自动更新,会安装在哪个地址?isUpdated要加elseif,以在重新安装时删除历史注册表?)

    64位系统的32位程序的注册表会放到如下路径 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node;64位在 HKEY_LOCAL_MACHINE\SOFTWARE

    参考
    https://nsis.sourceforge.io/Reference/ExecWait
    https://blog.csdn.net/Ma_Hong_Kai/article/details/83041356
    http://www.cppblog.com/wanghaiguang/archive/2012/03/08/167385.html
    https://www.cnblogs.com/haihai187/p/4863797.html

    相关文章

      网友评论

          本文标题:Electron打包自定义nsh(32位64位共用一套自更新)

          本文链接:https://www.haomeiwen.com/subject/fwyemktx.html