Электронный инсталлятор MSI с использованием электронного компоновщика
Мне удалось создать установщик.exe для Windows с помощью Electron Builder, я создаю 2 package.json, как указано в документации:
https://github.com/electron-userland/electron-builder.
В итоге у меня была папка с рабочим.exe
"dist:win64": "./node_modules/.bin/build --platform win32 --arch x64"
Раздел сборки моего основного package.json
"build": {
"app-bundle-id": "org.test.mytest",
"app-category-type": "public.app-category.graphics-design",
"osx": {
"contents": [
{
"x": 410,
"y": 150,
"type": "link",
"path": "/Applications"
},
{
"x": 130,
"y": 150,
"type": "file"
}
]
},
"win": {
"title": "My awesome app",
"version": "2.28.999.1",
"noMsi": false,
"authors": "Author"
}
}
Все работает нормально, у меня есть и установщик.exe, но нет возможности установить установщик.msi, который помещает содержимое в каталог программных файлов.
Вместо этого я закончил установку в папке C:\Users\UserHome\AppData\Local\ Electron с установщиком, как показано ниже.
Есть ли способ иметь настоящий установщик.msi, использующий электронный сборщик, который помещает содержимое в папку с программным файлом. Единственный проект, который работал, - это https://github.com/theodo/electron-boilerplate но он использует прежнюю версию электронного конструктора.
В настройке электронного документа noMsi
ложно, должен сделать трюк...
Should Squirrel.Windows create an MSI installer?
8 ответов
Если вы отключите один клик в конфигурации nsis (oneClick
) пользователю предлагается выполнить однопользовательскую установку (в AppData
) или на машину (в Program Files
).
Если вы не хотите давать им выбор, вы можете установить perMachine
в false, что разрешит установку только в Program Files:
"nsis": {
"oneClick": false,
"perMachine": false
},
Я бы лично оставил им возможность, так как они все еще могут быть установлены без прав администратора!
В последней версии electron-builder
также есть allowToChangeInstallationDirectory
опция, которая позволяет пользователю выбрать любое место установки.
Как указано в вики последней версии электронного строителя, вы должны использовать msi
вариант в build.win
:
"build": {
"app-bundle-id": "org.test.mytest",
"app-category-type": "public.app-category.graphics-design",
...
,
"win": {
"title": "My awesome app",
"version": "2.28.999.1",
"msi": true,
"authors": "Author"
}
}
Я понял это, посмотрев на цель. сделай это
"win": {
"target": [
"msi"
]
//your code here
},
Если вам нужен только установщик в формате exe (я не знаю о msi), вы можете использовать electronic-builder для сборки exe-файла, распакованного в каталог. Ознакомьтесь с документацией по адресу http://npmjs.org/package/electron-builder. Документация довольно проста. После того, как вы получите распакованную папку с вашим exe-файлом, используйте "Inno Setup Compiler", чтобы создать профессионально выглядящий установщик. Как только вы это освоите, на это уйдет всего 5 минут.
Я также не получил это работать (пока), но я понимаю, что это наоборот (ужасное название).
"noMsi": false // will make an MSI
"noMsi": true // will NOT make an MSI
Вы можете использовать этот пакет "electronics-wix-msi" для выполнения этой задачи.https://www.npmjs.com/package/electron-wix-msi Но сначала вам нужно упаковать ресурсы вашего проекта с помощью Electron-packager или Electron-Builder, а затем указать путь к папке win-unpacked как APP-DIR
Это сработало для меня:
"build": {
"artifactName": "yourappname.${ext}",
"directories": {
"output": "dist"
},
"win": {
"target": "msi",
"icon": "assets/logo.ico"
},
поместите это в свой package.json и запустите:
electron-builder --win
электронщик сделает msi для вашего проекта
Чтобы избежать подобных проблем, используйте только электронную сборку без установщика MSI.
"scripts": { "serve": "vue-cli-service service --port 5000", "build": "vue-cli-service build", "lint": "vue-cli-service lint", "electron :build": "vue-cli-service Electron:build", "electron:serve": "vue-cli-service Electron:serve", "postinstall": "electron-builder install-app-deps", "postuninstall" : "electron-builder install-app-deps" },