2017-08-22 4 views
2

Salut, je suis nouveau à l'électron et je me demandais comment je peux enregistrer un protocole personnalisé pour l'application au moment de l'installation de l'application. J'utilise le générateur d'électrons pour construire l'application. Voici le code de construction de constructionenregistrement protocole personnalisé au processus d'installation dans l'application électronique

"build": { 
"appId": "com.test.testapp", 
"productName": "testapp", 
"asar": true, 
"protocols": [{ 
    "name": "testapp", 
    "schemes": [ "testapp" ] 
}], 
"nsis": { 
    "oneClick": false, 
    "perMachine": true, 
    "allowToChangeInstallationDirectory": true, 
    "runAfterFinish": false, 
    "createDesktopShortcut": true 
}, 
"squirrelWindows": { 
    "msi": true 
}, 
"directories": { 
    "output": "distribution" 
} 

Je sais que en ajoutant la ligne ci-dessous enregistre le protocole personnalisé

app.setAsDefaultProtocolClient("testapp"); 

mais il ne fait que si je lance l'application au moins la première fois.

Ce que je ne veux pas, il n'y a aucune garantie que l'utilisateur va lancer l'application après l'installation.

Ainsi est-il possible que je puisse enregistrer le protocole personnalisé dans le processus d'installation en utilisant constructeur électronique

Répondre

0

Je suis encore nouveau pour Electron et bâtisseur d'électrons, mais résolu ce problème pour NSIS-cible déjà. Tout d'abord je dois noter que app.setAsDefaultProtocolClient utilisé pour gérer les protocoles personnalisés dans l'application autant que je comprends. Vous devez enregistrer ce protocole personnalisé en utilisant le générateur d'électrons lui-même.

Deuxièmement, je dois choisir entre NSIS et SquirrelWindows. NSIS est préférable tant que je comprends parce que Squirrel est moins soutenu et a quelques problèmes. Encore une fois je ne suis pas un expert mais j'ai lu quelque chose à ce sujet. La section squirrelWindows est donc redondante. Vous ne spécifiez pas win.target et "nsis" par défaut.

L'enregistrement du protocole personnalisé pour la cible NSIS pose un problème. Vous pouvez lire plus ici: Protocol (scheme) for windows mais il existe une solution de contournement. Vous devez créer un fichier nommé installer.nsh dans votre build dossier avec un tel contenu:

!macro customInstall DetailPrint "Register evehq-ng URI Handler" DeleteRegKey HKCR "evehq-ng" WriteRegStr HKCR "evehq-ng" "" "URL:evehq-ng" WriteRegStr HKCR "evehq-ng" "EveHQ NG SSO authentication Protocol" "" WriteRegStr HKCR "evehq-ng\DefaultIcon" "" "$INSTDIR\${APP_EXECUTABLE_FILENAME}" WriteRegStr HKCR "evehq-ng\shell" "" "" WriteRegStr HKCR "evehq-ng\shell\Open" "" "" WriteRegStr HKCR "evehq-ng\shell\Open\command" "" "$INSTDIR\${APP_EXECUTABLE_FILENAME} %1" !macroend

Remplacer evehq-ng avec votre chaîne de protocole et EveHQ NG SSO authentication Protocol avec votre description de protocole.

Ensuite, vous devez définir nsis.perMachine à true.

Je n'ai pas encore résolu ce problème pour Linux mais je travaille dans ce sens. Vous pouvez voir mon code dans mon projet de preuve de concepts ici: EveHQ-NG proof of concepts application.

Si vous allez résoudre ce problème pour Linux et MacOS écrivez-moi un message d'une manière ou d'une autre ici ou sur GitHub.

Espérons que ça aide.