qiushang 1 年之前
父节点
当前提交
ac19ee7504
共有 100 个文件被更改,包括 1934 次插入0 次删除
  1. 32 0
      .babelrc
  2. 18 0
      .electron-vue/build.config.js
  3. 144 0
      .electron-vue/build.js
  4. 40 0
      .electron-vue/dev-client.js
  5. 190 0
      .electron-vue/dev-runner.js
  6. 72 0
      .electron-vue/webpack.main.config.js
  7. 179 0
      .electron-vue/webpack.renderer.config.js
  8. 140 0
      .electron-vue/webpack.web.config.js
  9. 12 0
      .gitignore
  10. 二进制
      bin/cert/Qt5Core.dll
  11. 二进制
      bin/cert/cert.exe
  12. 二进制
      bin/cert/libgcc_s_dw2-1.dll
  13. 二进制
      bin/cert/libstdc++-6.dll
  14. 二进制
      bin/cert/libwinpthread-1.dll
  15. 二进制
      bin/ffmpeg.exe
  16. 二进制
      bin/ffplay.exe
  17. 二进制
      bin/ffprobe.exe
  18. 二进制
      build/icons/256x256.png
  19. 二进制
      build/icons/icon.icns
  20. 二进制
      build/icons/icon.ico
  21. 二进制
      build/icons/icon1.ico
  22. 12 0
      nsis/.gitignore
  23. 二进制
      nsis/7z/7z.dll
  24. 二进制
      nsis/7z/7z.exe
  25. 二进制
      nsis/NSIS/Bin/GenPat.exe
  26. 二进制
      nsis/NSIS/Bin/LibraryLocal.exe
  27. 二进制
      nsis/NSIS/Bin/MakeLangId.exe
  28. 二进制
      nsis/NSIS/Bin/RegTool.bin
  29. 二进制
      nsis/NSIS/Bin/makensis.exe
  30. 二进制
      nsis/NSIS/Bin/zip2exe.exe
  31. 二进制
      nsis/NSIS/Bin/zlib1.dll
  32. 144 0
      nsis/NSIS/COPYING
  33. 二进制
      nsis/NSIS/Contrib/Graphics/Checks/big.bmp
  34. 二进制
      nsis/NSIS/Contrib/Graphics/Checks/classic-cross.bmp
  35. 二进制
      nsis/NSIS/Contrib/Graphics/Checks/classic.bmp
  36. 二进制
      nsis/NSIS/Contrib/Graphics/Checks/colorful.bmp
  37. 二进制
      nsis/NSIS/Contrib/Graphics/Checks/grey-cross.bmp
  38. 二进制
      nsis/NSIS/Contrib/Graphics/Checks/grey.bmp
  39. 二进制
      nsis/NSIS/Contrib/Graphics/Checks/modern.bmp
  40. 二进制
      nsis/NSIS/Contrib/Graphics/Checks/red-round.bmp
  41. 二进制
      nsis/NSIS/Contrib/Graphics/Checks/red.bmp
  42. 二进制
      nsis/NSIS/Contrib/Graphics/Checks/simple-round.bmp
  43. 二进制
      nsis/NSIS/Contrib/Graphics/Checks/simple-round2.bmp
  44. 二进制
      nsis/NSIS/Contrib/Graphics/Checks/simple.bmp
  45. 二进制
      nsis/NSIS/Contrib/Graphics/Header/nsis-r.bmp
  46. 二进制
      nsis/NSIS/Contrib/Graphics/Header/nsis.bmp
  47. 二进制
      nsis/NSIS/Contrib/Graphics/Header/orange-nsis.bmp
  48. 二进制
      nsis/NSIS/Contrib/Graphics/Header/orange-r-nsis.bmp
  49. 二进制
      nsis/NSIS/Contrib/Graphics/Header/orange-r.bmp
  50. 二进制
      nsis/NSIS/Contrib/Graphics/Header/orange-uninstall-nsis.bmp
  51. 二进制
      nsis/NSIS/Contrib/Graphics/Header/orange-uninstall-r-nsis.bmp
  52. 二进制
      nsis/NSIS/Contrib/Graphics/Header/orange-uninstall-r.bmp
  53. 二进制
      nsis/NSIS/Contrib/Graphics/Header/orange-uninstall.bmp
  54. 二进制
      nsis/NSIS/Contrib/Graphics/Header/orange.bmp
  55. 二进制
      nsis/NSIS/Contrib/Graphics/Header/win.bmp
  56. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/arrow-install.ico
  57. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/arrow-uninstall.ico
  58. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/arrow2-install.ico
  59. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/arrow2-uninstall.ico
  60. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/box-install.ico
  61. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/box-uninstall.ico
  62. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/classic-install.ico
  63. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/classic-uninstall.ico
  64. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/llama-blue.ico
  65. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/llama-grey.ico
  66. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/modern-install-blue-full.ico
  67. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/modern-install-blue.ico
  68. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/modern-install-colorful.ico
  69. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/modern-install-full.ico
  70. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/modern-install.ico
  71. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/modern-uninstall-blue-full.ico
  72. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/modern-uninstall-blue.ico
  73. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/modern-uninstall-colorful.ico
  74. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/modern-uninstall-full.ico
  75. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/modern-uninstall.ico
  76. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/nsis1-install.ico
  77. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/nsis1-uninstall.ico
  78. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/orange-install-nsis.ico
  79. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/orange-install.ico
  80. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/orange-uninstall-nsis.ico
  81. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/orange-uninstall.ico
  82. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/pixel-install.ico
  83. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/pixel-uninstall.ico
  84. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/win-install.ico
  85. 二进制
      nsis/NSIS/Contrib/Graphics/Icons/win-uninstall.ico
  86. 二进制
      nsis/NSIS/Contrib/Graphics/Wizard/arrow.bmp
  87. 二进制
      nsis/NSIS/Contrib/Graphics/Wizard/llama.bmp
  88. 二进制
      nsis/NSIS/Contrib/Graphics/Wizard/nsis.bmp
  89. 二进制
      nsis/NSIS/Contrib/Graphics/Wizard/nullsoft.bmp
  90. 二进制
      nsis/NSIS/Contrib/Graphics/Wizard/orange-nsis.bmp
  91. 二进制
      nsis/NSIS/Contrib/Graphics/Wizard/orange-uninstall-nsis.bmp
  92. 二进制
      nsis/NSIS/Contrib/Graphics/Wizard/orange-uninstall.bmp
  93. 二进制
      nsis/NSIS/Contrib/Graphics/Wizard/orange.bmp
  94. 二进制
      nsis/NSIS/Contrib/Graphics/Wizard/win.bmp
  95. 190 0
      nsis/NSIS/Contrib/Language files/Afrikaans.nlf
  96. 121 0
      nsis/NSIS/Contrib/Language files/Afrikaans.nsh
  97. 191 0
      nsis/NSIS/Contrib/Language files/Albanian.nlf
  98. 129 0
      nsis/NSIS/Contrib/Language files/Albanian.nsh
  99. 190 0
      nsis/NSIS/Contrib/Language files/Arabic.nlf
  100. 130 0
      nsis/NSIS/Contrib/Language files/Arabic.nsh

+ 32 - 0
.babelrc

@@ -0,0 +1,32 @@
+{
+  "comments": false,
+  "env": {
+    "main": {
+      "presets": [
+        ["env", {
+          "targets": { "node": 7 }
+        }],
+        "stage-0"
+      ]
+    },
+    "renderer": {
+      "presets": [
+        ["env", {
+          "modules": false
+        }],
+        "stage-0"
+      ]
+    },
+    "web": {
+      "presets": [
+        ["env", {
+          "modules": false
+        }],
+        "stage-0"
+      ]
+    }
+  },
+  "plugins": [
+	  "transform-runtime"
+	  ]
+}

+ 18 - 0
.electron-vue/build.config.js

@@ -0,0 +1,18 @@
+const path = require('path')
+const dependencies = require('../package.json')
+
+/**
+ * `electron-packager` options
+ * https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-electron-packager.html
+ */
+module.exports = {
+  arch: 'ia32',
+  asar: { unpack: "**/bin/**"},
+  dir: path.join(__dirname, '../'),
+  icon: path.join(__dirname, '../build/icons/icon'),
+  ignore: /(^\/(src|test|\.[a-z]+|README|yarn|static|dist\/web))|\.gitkeep/,
+  out: path.join(__dirname, '../build'),
+  overwrite: true,
+  platform: process.env.BUILD_TARGET || 'all',
+  appCopyright: dependencies.softInfo.copyright
+}

+ 144 - 0
.electron-vue/build.js

@@ -0,0 +1,144 @@
+'use strict'
+
+process.env.NODE_ENV = 'production'
+
+const { say } = require('cfonts')
+const chalk = require('chalk')
+const del = require('del')
+const packager = require('electron-packager')
+const webpack = require('webpack')
+const Multispinner = require('multispinner')
+
+const buildConfig = require('./build.config')
+const mainConfig = require('./webpack.main.config')
+const rendererConfig = require('./webpack.renderer.config')
+const webConfig = require('./webpack.web.config')
+
+const doneLog = chalk.bgGreen.white(' DONE ') + ' '
+const errorLog = chalk.bgRed.white(' ERROR ') + ' '
+const okayLog = chalk.bgBlue.white(' OKAY ') + ' '
+const isCI = process.env.CI || false
+
+if (process.env.BUILD_TARGET === 'clean') clean()
+else if (process.env.BUILD_TARGET === 'web') web()
+else build()
+
+function clean () {
+  del.sync(['build/*', '!build/icons', '!build/icons/icon.*'])
+  console.log(`\n${doneLog}\n`)
+  process.exit()
+}
+
+function build () {
+  greeting()
+
+  del.sync(['dist/electron/*', '!.gitkeep'])
+
+  const tasks = ['main', 'renderer']
+  const m = new Multispinner(tasks, {
+    preText: 'building',
+    postText: 'process'
+  })
+
+  let results = ''
+
+  m.on('success', () => {
+    process.stdout.write('\x1B[2J\x1B[0f')
+    console.log(`\n\n${results}`)
+    console.log(`${okayLog}take it away ${chalk.yellow('`electron-packager`')}\n`)
+    bundleApp()
+  })
+
+  pack(mainConfig).then(result => {
+    results += result + '\n\n'
+    m.success('main')
+  }).catch(err => {
+    m.error('main')
+    console.log(`\n  ${errorLog}failed to build main process`)
+    console.error(`\n${err}\n`)
+    process.exit(1)
+  })
+
+  pack(rendererConfig).then(result => {
+    results += result + '\n\n'
+    m.success('renderer')
+  }).catch(err => {
+    m.error('renderer')
+    console.log(`\n  ${errorLog}failed to build renderer process`)
+    console.error(`\n${err}\n`)
+    process.exit(1)
+  })
+}
+
+function pack (config) {
+  return new Promise((resolve, reject) => {
+    config.mode = 'production'
+    webpack(config, (err, stats) => {
+      if (err) reject(err.stack || err)
+      else if (stats.hasErrors()) {
+        let err = ''
+
+        stats.toString({
+          chunks: false,
+          colors: true
+        })
+        .split(/\r?\n/)
+        .forEach(line => {
+          err += `    ${line}\n`
+        })
+
+        reject(err)
+      } else {
+        resolve(stats.toString({
+          chunks: false,
+          colors: true
+        }))
+      }
+    })
+  })
+}
+
+function bundleApp () {
+  buildConfig.mode = 'production'
+  packager(buildConfig, (err, appPaths) => {
+    if (err) {
+      console.log(`\n${errorLog}${chalk.yellow('`electron-packager`')} says...\n`)
+      console.log(err + '\n')
+    } else {
+      console.log(`\n${doneLog}\n`)
+    }
+  })
+}
+
+function web () {
+  del.sync(['dist/web/*', '!.gitkeep'])
+  webConfig.mode = 'production'
+  webpack(webConfig, (err, stats) => {
+    if (err || stats.hasErrors()) console.log(err)
+
+    console.log(stats.toString({
+      chunks: false,
+      colors: true
+    }))
+
+    process.exit()
+  })
+}
+
+function greeting () {
+  const cols = process.stdout.columns
+  let text = ''
+
+  if (cols > 85) text = 'lets-build'
+  else if (cols > 60) text = 'lets-|build'
+  else text = false
+
+  if (text && !isCI) {
+    say(text, {
+      colors: ['yellow'],
+      font: 'simple3d',
+      space: false
+    })
+  } else console.log(chalk.yellow.bold('\n  lets-build'))
+  console.log()
+}

+ 40 - 0
.electron-vue/dev-client.js

@@ -0,0 +1,40 @@
+const hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
+
+hotClient.subscribe(event => {
+  /**
+   * Reload browser when HTMLWebpackPlugin emits a new index.html
+   *
+   * Currently disabled until jantimon/html-webpack-plugin#680 is resolved.
+   * https://github.com/SimulatedGREG/electron-vue/issues/437
+   * https://github.com/jantimon/html-webpack-plugin/issues/680
+   */
+  // if (event.action === 'reload') {
+  //   window.location.reload()
+  // }
+
+  /**
+   * Notify `mainWindow` when `main` process is compiling,
+   * giving notice for an expected reload of the `electron` process
+   */
+  if (event.action === 'compiling') {
+    document.body.innerHTML += `
+      <style>
+        #dev-client {
+          background: #4fc08d;
+          border-radius: 4px;
+          bottom: 20px;
+          box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
+          color: #fff;
+          font-family: 'Source Sans Pro', sans-serif;
+          left: 20px;
+          padding: 8px 12px;
+          position: absolute;
+        }
+      </style>
+
+      <div id="dev-client">
+        Compiling Main Process...
+      </div>
+    `
+  }
+})

+ 190 - 0
.electron-vue/dev-runner.js

@@ -0,0 +1,190 @@
+'use strict'
+
+const chalk = require('chalk')
+const electron = require('electron')
+const path = require('path')
+const { say } = require('cfonts')
+const { spawn } = require('child_process')
+const webpack = require('webpack')
+const WebpackDevServer = require('webpack-dev-server')
+const webpackHotMiddleware = require('webpack-hot-middleware')
+
+const mainConfig = require('./webpack.main.config')
+const rendererConfig = require('./webpack.renderer.config')
+
+let electronProcess = null
+let manualRestart = false
+let hotMiddleware
+
+function logStats (proc, data) {
+  let log = ''
+
+  log += chalk.yellow.bold(`┏ ${proc} Process ${new Array((19 - proc.length) + 1).join('-')}`)
+  log += '\n\n'
+
+  if (typeof data === 'object') {
+    data.toString({
+      colors: true,
+      chunks: false
+    }).split(/\r?\n/).forEach(line => {
+      log += '  ' + line + '\n'
+    })
+  } else {
+    log += `  ${data}\n`
+  }
+
+  log += '\n' + chalk.yellow.bold(`┗ ${new Array(28 + 1).join('-')}`) + '\n'
+
+  console.log(log)
+}
+
+function startRenderer () {
+  return new Promise((resolve, reject) => {
+    rendererConfig.entry.renderer = [path.join(__dirname, 'dev-client')].concat(rendererConfig.entry.renderer)
+    rendererConfig.mode = 'development'
+    const compiler = webpack(rendererConfig)
+    hotMiddleware = webpackHotMiddleware(compiler, {
+      log: false,
+      heartbeat: 2500
+    })
+
+    compiler.hooks.compilation.tap('compilation', compilation => {
+      compilation.hooks.htmlWebpackPluginAfterEmit.tapAsync('html-webpack-plugin-after-emit', (data, cb) => {
+        hotMiddleware.publish({ action: 'reload' })
+        cb()
+      })
+    })
+
+    compiler.hooks.done.tap('done', stats => {
+      logStats('Renderer', stats)
+    })
+
+    const server = new WebpackDevServer(
+      compiler,
+      {
+        contentBase: path.join(__dirname, '../'),
+        quiet: true,
+        before (app, ctx) {
+          app.use(hotMiddleware)
+          ctx.middleware.waitUntilValid(() => {
+            resolve()
+          })
+        }
+      }
+    )
+
+    server.listen(9080)
+  })
+}
+
+function startMain () {
+  return new Promise((resolve, reject) => {
+    mainConfig.entry.main = [path.join(__dirname, '../src/main/index.dev.js')].concat(mainConfig.entry.main)
+    mainConfig.mode = 'development'
+    const compiler = webpack(mainConfig)
+
+    compiler.hooks.watchRun.tapAsync('watch-run', (compilation, done) => {
+      logStats('Main', chalk.white.bold('compiling...'))
+      hotMiddleware.publish({ action: 'compiling' })
+      done()
+    })
+
+    compiler.watch({}, (err, stats) => {
+      if (err) {
+        console.log(err)
+        return
+      }
+
+      logStats('Main', stats)
+
+      if (electronProcess && electronProcess.kill) {
+        manualRestart = true
+        process.kill(electronProcess.pid)
+        electronProcess = null
+        startElectron()
+
+        setTimeout(() => {
+          manualRestart = false
+        }, 5000)
+      }
+
+      resolve()
+    })
+  })
+}
+
+function startElectron () {
+  var args = [
+    '--inspect=5858',
+    path.join(__dirname, '../dist/electron/main.js')
+  ]
+
+  // detect yarn or npm and process commandline args accordingly
+  if (process.env.npm_execpath.endsWith('yarn.js')) {
+    args = args.concat(process.argv.slice(3))
+  } else if (process.env.npm_execpath.endsWith('npm-cli.js')) {
+    args = args.concat(process.argv.slice(2))
+  }
+
+  electronProcess = spawn(electron, args)
+  
+  electronProcess.stdout.on('data', data => {
+    electronLog(data, 'blue')
+  })
+  electronProcess.stderr.on('data', data => {
+    electronLog(data, 'red')
+  })
+
+  electronProcess.on('close', () => {
+    if (!manualRestart) process.exit()
+  })
+}
+
+function electronLog (data, color) {
+  let log = ''
+  data = data.toString().split(/\r?\n/)
+  data.forEach(line => {
+    log += `  ${line}\n`
+  })
+  if (/[0-9A-z]+/.test(log)) {
+    console.log(
+      chalk[color].bold('┏ Electron -------------------') +
+      '\n\n' +
+      log +
+      chalk[color].bold('┗ ----------------------------') +
+      '\n'
+    )
+  }
+}
+
+function greeting () {
+  const cols = process.stdout.columns
+  let text = ''
+
+  if (cols > 104) text = 'electron-vue'
+  else if (cols > 76) text = 'electron-|vue'
+  else text = false
+
+  if (text) {
+    say(text, {
+      colors: ['yellow'],
+      font: 'simple3d',
+      space: false
+    })
+  } else console.log(chalk.yellow.bold('\n  electron-vue'))
+  console.log(chalk.blue('  getting ready...') + '\n')
+}
+
+function init () {
+  greeting()
+
+  Promise.all([startRenderer(), startMain()])
+    .then(() => {
+      startElectron()
+    })
+    .catch(err => {
+      console.error(err)
+    })
+}
+
+init()

+ 72 - 0
.electron-vue/webpack.main.config.js

@@ -0,0 +1,72 @@
+'use strict'
+
+process.env.BABEL_ENV = 'main'
+
+const path = require('path')
+const { dependencies } = require('../package.json')
+const webpack = require('webpack')
+
+const MinifyPlugin = require("babel-minify-webpack-plugin")
+
+let mainConfig = {
+  entry: {
+    main: path.join(__dirname, '../src/main/index.js')
+  },
+  externals: [
+    ...Object.keys(dependencies || {})
+  ],
+  module: {
+    rules: [
+      {
+        test: /\.js$/,
+        use: 'babel-loader',
+        exclude: /node_modules/
+      },
+      {
+        test: /\.node$/,
+        use: 'node-loader'
+      }
+    ]
+  },
+  node: {
+    __dirname: process.env.NODE_ENV !== 'production',
+    __filename: process.env.NODE_ENV !== 'production'
+  },
+  output: {
+    filename: '[name].js',
+    libraryTarget: 'commonjs2',
+    path: path.join(__dirname, '../dist/electron')
+  },
+  plugins: [
+    new webpack.NoEmitOnErrorsPlugin()
+  ],
+  resolve: {
+    extensions: ['.js', '.json', '.node']
+  },
+  target: 'electron-main'
+}
+
+/**
+ * Adjust mainConfig for development settings
+ */
+if (process.env.NODE_ENV !== 'production') {
+  mainConfig.plugins.push(
+    new webpack.DefinePlugin({
+      '__static': `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"`
+    })
+  )
+}
+
+/**
+ * Adjust mainConfig for production settings
+ */
+if (process.env.NODE_ENV === 'production') {
+  mainConfig.plugins.push(
+    new MinifyPlugin(),
+    new webpack.DefinePlugin({
+      'process.env.NODE_ENV': '"production"'
+    })
+  )
+}
+
+module.exports = mainConfig

+ 179 - 0
.electron-vue/webpack.renderer.config.js

@@ -0,0 +1,179 @@
+'use strict'
+
+process.env.BABEL_ENV = 'renderer'
+
+const path = require('path')
+const { dependencies } = require('../package.json')
+const webpack = require('webpack')
+
+const MinifyPlugin = require("babel-minify-webpack-plugin")
+const CopyWebpackPlugin = require('copy-webpack-plugin')
+const MiniCssExtractPlugin = require('mini-css-extract-plugin')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+const { VueLoaderPlugin } = require('vue-loader')
+
+/**
+ * List of node_modules to include in webpack bundle
+ *
+ * Required for specific packages like Vue UI libraries
+ * that provide pure *.vue files that need compiling
+ * https://simulatedgreg.gitbooks.io/electron-vue/content/en/webpack-configurations.html#white-listing-externals
+ */
+let whiteListedModules = ['vue']
+
+let rendererConfig = {
+  devtool: '#cheap-module-eval-source-map',
+  entry: {
+    renderer: path.join(__dirname, '../src/renderer/main.js')
+  },
+  externals: [
+    ...Object.keys(dependencies || {}).filter(d => !whiteListedModules.includes(d))
+  ],
+  module: {
+    rules: [
+      {
+        test: /\.scss$/,
+        use: ['vue-style-loader', 'css-loader', 'sass-loader']
+      },
+      {
+        test: /\.sass$/,
+        use: ['vue-style-loader', 'css-loader', 'sass-loader?indentedSyntax']
+      },
+      {
+        test: /\.less$/,
+        use: ['vue-style-loader', 'css-loader', 'less-loader']
+      },
+      {
+        test: /\.css$/,
+        use: ['vue-style-loader', 'css-loader']
+      },
+      {
+        test: /\.html$/,
+        use: 'vue-html-loader'
+      },
+      {
+        test: /\.js$/,
+        use: 'babel-loader',
+        exclude: /node_modules/
+      },
+      {
+        test: /\.node$/,
+        use: 'node-loader'
+      },
+      {
+        test: /\.vue$/,
+        use: {
+          loader: 'vue-loader',
+          options: {
+            extractCSS: process.env.NODE_ENV === 'production',
+            loaders: {
+              sass: 'vue-style-loader!css-loader!sass-loader?indentedSyntax=1',
+              scss: 'vue-style-loader!css-loader!sass-loader',
+              less: 'vue-style-loader!css-loader!less-loader'
+            }
+          }
+        }
+      },
+      {
+        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
+        use: {
+          loader: 'url-loader',
+          query: {
+            limit: 10000,
+            name: 'imgs/[name]--[folder].[ext]'
+          }
+        }
+      },
+      {
+        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
+        loader: 'url-loader',
+        options: {
+          limit: 10000,
+          name: 'media/[name]--[folder].[ext]'
+        }
+      },
+      {
+        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
+        use: {
+          loader: 'url-loader',
+          query: {
+            limit: 10000,
+            name: 'fonts/[name]--[folder].[ext]'
+          }
+        }
+      }
+    ]
+  },
+  node: {
+    __dirname: process.env.NODE_ENV !== 'production',
+    __filename: process.env.NODE_ENV !== 'production'
+  },
+  plugins: [
+    new VueLoaderPlugin(),
+    new MiniCssExtractPlugin({filename: 'styles.css'}),
+    new HtmlWebpackPlugin({
+      filename: 'index.html',
+      template: path.resolve(__dirname, '../src/index.ejs'),
+      minify: {
+        collapseWhitespace: true,
+        removeAttributeQuotes: true,
+        removeComments: true
+      },
+      nodeModules: process.env.NODE_ENV !== 'production'
+        ? path.resolve(__dirname, '../node_modules')
+        : false
+    }),
+    new webpack.HotModuleReplacementPlugin(),
+    new webpack.NoEmitOnErrorsPlugin()
+  ],
+  output: {
+    filename: '[name].js',
+    libraryTarget: 'commonjs2',
+    path: path.join(__dirname, '../dist/electron')
+  },
+  resolve: {
+    alias: {
+      '@': path.join(__dirname, '../src/renderer'),
+      'vue$': 'vue/dist/vue.esm.js'
+    },
+    extensions: ['.js', '.vue', '.json', '.css', '.node']
+  },
+  target: 'electron-renderer'
+}
+
+/**
+ * Adjust rendererConfig for development settings
+ */
+if (process.env.NODE_ENV !== 'production') {
+  rendererConfig.plugins.push(
+    new webpack.DefinePlugin({
+      '__static': `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"`
+    })
+  )
+}
+
+/**
+ * Adjust rendererConfig for production settings
+ */
+if (process.env.NODE_ENV === 'production') {
+  rendererConfig.devtool = ''
+
+  rendererConfig.plugins.push(
+    new MinifyPlugin(),
+    new CopyWebpackPlugin([
+      {
+        from: path.join(__dirname, '../static'),
+        to: path.join(__dirname, '../dist/electron/static'),
+        ignore: ['.*']
+      }
+    ]),
+    new webpack.DefinePlugin({
+      'process.env.NODE_ENV': '"production"'
+    }),
+    new webpack.LoaderOptionsPlugin({
+      minimize: true
+    })
+  )
+}
+
+module.exports = rendererConfig

+ 140 - 0
.electron-vue/webpack.web.config.js

@@ -0,0 +1,140 @@
+'use strict'
+
+process.env.BABEL_ENV = 'web'
+
+const path = require('path')
+const webpack = require('webpack')
+
+const MinifyPlugin = require("babel-minify-webpack-plugin")
+const CopyWebpackPlugin = require('copy-webpack-plugin')
+const MiniCssExtractPlugin = require('mini-css-extract-plugin')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+const { VueLoaderPlugin } = require('vue-loader')
+
+let webConfig = {
+  devtool: '#cheap-module-eval-source-map',
+  entry: {
+    web: path.join(__dirname, '../src/renderer/main.js')
+  },
+  module: {
+    rules: [
+      {
+        test: /\.scss$/,
+        use: ['vue-style-loader', 'css-loader', 'sass-loader']
+      },
+      {
+        test: /\.sass$/,
+        use: ['vue-style-loader', 'css-loader', 'sass-loader?indentedSyntax']
+      },
+      {
+        test: /\.less$/,
+        use: ['vue-style-loader', 'css-loader', 'less-loader']
+      },
+      {
+        test: /\.css$/,
+        use: ['vue-style-loader', 'css-loader']
+      },
+      {
+        test: /\.html$/,
+        use: 'vue-html-loader'
+      },
+      {
+        test: /\.js$/,
+        use: 'babel-loader',
+        include: [ path.resolve(__dirname, '../src/renderer') ],
+        exclude: /node_modules/
+      },
+      {
+        test: /\.vue$/,
+        use: {
+          loader: 'vue-loader',
+          options: {
+            extractCSS: true,
+            loaders: {
+              sass: 'vue-style-loader!css-loader!sass-loader?indentedSyntax=1',
+              scss: 'vue-style-loader!css-loader!sass-loader',
+              less: 'vue-style-loader!css-loader!less-loader'
+            }
+          }
+        }
+      },
+      {
+        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
+        use: {
+          loader: 'url-loader',
+          query: {
+            limit: 10000,
+            name: 'imgs/[name].[ext]'
+          }
+        }
+      },
+      {
+        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
+        use: {
+          loader: 'url-loader',
+          query: {
+            limit: 10000,
+            name: 'fonts/[name].[ext]'
+          }
+        }
+      }
+    ]
+  },
+  plugins: [
+    new VueLoaderPlugin(),
+    new MiniCssExtractPlugin({filename: 'styles.css'}),
+    new HtmlWebpackPlugin({
+      filename: 'index.html',
+      template: path.resolve(__dirname, '../src/index.ejs'),
+      minify: {
+        collapseWhitespace: true,
+        removeAttributeQuotes: true,
+        removeComments: true
+      },
+      nodeModules: false
+    }),
+    new webpack.DefinePlugin({
+      'process.env.IS_WEB': 'true'
+    }),
+    new webpack.HotModuleReplacementPlugin(),
+    new webpack.NoEmitOnErrorsPlugin()
+  ],
+  output: {
+    filename: '[name].js',
+    path: path.join(__dirname, '../dist/web')
+  },
+  resolve: {
+    alias: {
+      '@': path.join(__dirname, '../src/renderer'),
+      'vue$': 'vue/dist/vue.esm.js'
+    },
+    extensions: ['.js', '.vue', '.json', '.css']
+  },
+  target: 'web'
+}
+
+/**
+ * Adjust webConfig for production settings
+ */
+if (process.env.NODE_ENV === 'production') {
+  webConfig.devtool = ''
+
+  webConfig.plugins.push(
+    new MinifyPlugin(),
+    new CopyWebpackPlugin([
+      {
+        from: path.join(__dirname, '../static'),
+        to: path.join(__dirname, '../dist/web/static'),
+        ignore: ['.*']
+      }
+    ]),
+    new webpack.DefinePlugin({
+      'process.env.NODE_ENV': '"production"'
+    }),
+    new webpack.LoaderOptionsPlugin({
+      minimize: true
+    })
+  )
+}
+
+module.exports = webConfig

+ 12 - 0
.gitignore

@@ -0,0 +1,12 @@
+.idea
+.DS_Store
+dist/electron/*
+dist/web/*
+build/*
+!build/icons
+node_modules/
+npm-debug.log
+npm-debug.log.*
+thumbs.db
+!.gitkeep
+file*.txt

二进制
bin/cert/Qt5Core.dll


二进制
bin/cert/cert.exe


二进制
bin/cert/libgcc_s_dw2-1.dll


二进制
bin/cert/libstdc++-6.dll


二进制
bin/cert/libwinpthread-1.dll


二进制
bin/ffmpeg.exe


二进制
bin/ffplay.exe


二进制
bin/ffprobe.exe


二进制
build/icons/256x256.png


二进制
build/icons/icon.icns


二进制
build/icons/icon.ico


二进制
build/icons/icon1.ico


+ 12 - 0
nsis/.gitignore

@@ -0,0 +1,12 @@
+.idea
+.DS_Store
+dist/electron/*
+dist/web/*
+build/*
+!build/icons
+node_modules/
+npm-debug.log
+npm-debug.log.*
+thumbs.db
+!.gitkeep
+output

二进制
nsis/7z/7z.dll


二进制
nsis/7z/7z.exe


二进制
nsis/NSIS/Bin/GenPat.exe


二进制
nsis/NSIS/Bin/LibraryLocal.exe


二进制
nsis/NSIS/Bin/MakeLangId.exe


二进制
nsis/NSIS/Bin/RegTool.bin


二进制
nsis/NSIS/Bin/makensis.exe


二进制
nsis/NSIS/Bin/zip2exe.exe


二进制
nsis/NSIS/Bin/zlib1.dll


+ 144 - 0
nsis/NSIS/COPYING

@@ -0,0 +1,144 @@
+COPYRIGHT
+---------
+
+Copyright (C) 1999-2017 Contributors
+
+More detailed copyright information can be found in the individual source code files.
+
+APPLICABLE LICENSES
+-------------------
+
+* All NSIS source code, plug-ins, documentation, examples, header files and graphics, with the exception of the compression modules and where otherwise noted, are licensed under the zlib/libpng license.
+
+* The zlib compression module for NSIS is licensed under the zlib/libpng license.
+
+* The bzip2 compression module for NSIS is licensed under the bzip2 license.
+
+* The LZMA compression module for NSIS is licensed under the Common Public License version 1.0.
+
+ZLIB/LIBPNG LICENSE
+-------------------
+
+This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+      1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+      2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+      3. This notice may not be removed or altered from any source distribution.
+
+BZIP2 LICENSE
+-------------
+
+This program, "bzip2" and associated library "libbzip2", are copyright (C) 1996-2000 Julian R Seward. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+      1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+    
+      2. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+      3. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+      4. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Julian Seward, Cambridge, UK.
+
+jseward@acm.org
+
+COMMON PUBLIC LICENSE VERSION 1.0
+---------------------------------
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+      a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+      b) in the case of each subsequent Contributor:
+
+      i) changes to the Program, and
+
+      ii) additions to the Program;
+
+      where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. 
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+      a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+      b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. 
+
+      c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+      d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. 
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+      a) it complies with the terms and conditions of this Agreement; and
+
+      b) its license agreement:
+
+      i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; 
+
+      ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; 
+
+      iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+      iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. 
+
+When the Program is made available in source code form:
+
+      a) it must be made available under this Agreement; and 
+
+      b) a copy of this Agreement must be included with each copy of the Program. 
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. 
+
+SPECIAL EXCEPTION FOR LZMA COMPRESSION MODULE
+---------------------------------------------
+
+Igor Pavlov and Amir Szekely, the authors of the LZMA compression module for NSIS, expressly permit you to statically or dynamically link your code (or bind by name) to the files from the LZMA compression module for NSIS without subjecting your linked code to the terms of the Common Public license version 1.0. Any modifications or additions to files from the LZMA compression module for NSIS, however, are subject to the terms of the Common Public License version 1.0.

二进制
nsis/NSIS/Contrib/Graphics/Checks/big.bmp


二进制
nsis/NSIS/Contrib/Graphics/Checks/classic-cross.bmp


二进制
nsis/NSIS/Contrib/Graphics/Checks/classic.bmp


二进制
nsis/NSIS/Contrib/Graphics/Checks/colorful.bmp


二进制
nsis/NSIS/Contrib/Graphics/Checks/grey-cross.bmp


二进制
nsis/NSIS/Contrib/Graphics/Checks/grey.bmp


二进制
nsis/NSIS/Contrib/Graphics/Checks/modern.bmp


二进制
nsis/NSIS/Contrib/Graphics/Checks/red-round.bmp


二进制
nsis/NSIS/Contrib/Graphics/Checks/red.bmp


二进制
nsis/NSIS/Contrib/Graphics/Checks/simple-round.bmp


二进制
nsis/NSIS/Contrib/Graphics/Checks/simple-round2.bmp


二进制
nsis/NSIS/Contrib/Graphics/Checks/simple.bmp


二进制
nsis/NSIS/Contrib/Graphics/Header/nsis-r.bmp


二进制
nsis/NSIS/Contrib/Graphics/Header/nsis.bmp


二进制
nsis/NSIS/Contrib/Graphics/Header/orange-nsis.bmp


二进制
nsis/NSIS/Contrib/Graphics/Header/orange-r-nsis.bmp


二进制
nsis/NSIS/Contrib/Graphics/Header/orange-r.bmp


二进制
nsis/NSIS/Contrib/Graphics/Header/orange-uninstall-nsis.bmp


二进制
nsis/NSIS/Contrib/Graphics/Header/orange-uninstall-r-nsis.bmp


二进制
nsis/NSIS/Contrib/Graphics/Header/orange-uninstall-r.bmp


二进制
nsis/NSIS/Contrib/Graphics/Header/orange-uninstall.bmp


二进制
nsis/NSIS/Contrib/Graphics/Header/orange.bmp


二进制
nsis/NSIS/Contrib/Graphics/Header/win.bmp


二进制
nsis/NSIS/Contrib/Graphics/Icons/arrow-install.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/arrow-uninstall.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/arrow2-install.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/arrow2-uninstall.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/box-install.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/box-uninstall.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/classic-install.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/classic-uninstall.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/llama-blue.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/llama-grey.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/modern-install-blue-full.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/modern-install-blue.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/modern-install-colorful.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/modern-install-full.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/modern-install.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/modern-uninstall-blue-full.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/modern-uninstall-blue.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/modern-uninstall-colorful.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/modern-uninstall-full.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/modern-uninstall.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/nsis1-install.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/nsis1-uninstall.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/orange-install-nsis.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/orange-install.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/orange-uninstall-nsis.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/orange-uninstall.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/pixel-install.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/pixel-uninstall.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/win-install.ico


二进制
nsis/NSIS/Contrib/Graphics/Icons/win-uninstall.ico


二进制
nsis/NSIS/Contrib/Graphics/Wizard/arrow.bmp


二进制
nsis/NSIS/Contrib/Graphics/Wizard/llama.bmp


二进制
nsis/NSIS/Contrib/Graphics/Wizard/nsis.bmp


二进制
nsis/NSIS/Contrib/Graphics/Wizard/nullsoft.bmp


二进制
nsis/NSIS/Contrib/Graphics/Wizard/orange-nsis.bmp


二进制
nsis/NSIS/Contrib/Graphics/Wizard/orange-uninstall-nsis.bmp


二进制
nsis/NSIS/Contrib/Graphics/Wizard/orange-uninstall.bmp


二进制
nsis/NSIS/Contrib/Graphics/Wizard/orange.bmp


二进制
nsis/NSIS/Contrib/Graphics/Wizard/win.bmp


+ 190 - 0
nsis/NSIS/Contrib/Language files/Afrikaans.nlf

@@ -0,0 +1,190 @@
+# Header, don't edit
+NLF v6
+# Language ID
+1078
+# Font and size - dash (-) means default
+-
+-
+# Codepage - dash (-) means ANSI code page
+1252
+# RTL - anything else than RTL means LTR
+-
+# Translation by Friedel Wolff
+# ^Branding
+Nullsoft Installeerstelsel %s
+# ^SetupCaption
+$(^Name) Installasie
+# ^UninstallCaption
+$(^Name) Verwydering
+# ^LicenseSubCaption
+: Lisensie-ooreenkoms
+# ^ComponentsSubCaption
+: Installasiekeuses
+# ^DirSubCaption
+: Installasiegids
+# ^InstallingSubCaption
+: Installeer tans
+# ^CompletedSubCaption
+: Voltooid
+# ^UnComponentsSubCaption
+: Verwyderingkeuses
+# ^UnDirSubCaption
+: Verwyderinggids
+# ^ConfirmSubCaption
+: Bevestiging
+# ^UninstallingSubCaption
+: Verwyder tans
+# ^UnCompletedSubCaption
+: Voltooid
+# ^BackBtn
+< V&orige
+# ^NextBtn
+&Volgende >
+# ^AgreeBtn
+&Regso
+# ^AcceptBtn
+Ek &aanvaar die ooreenkoms
+# ^DontAcceptBtn
+Ek aan vaar &nie die ooreenkoms nie
+# ^InstallBtn
+&Installeer
+# ^UninstallBtn
+&Verwyder
+# ^CancelBtn
+Kanselleer
+# ^CloseBtn
+&Sluit af
+# ^BrowseBtn
+&Blaai...
+# ^ShowDetailsBtn
+&Wys detail
+# ^ClickNext
+Klik op Volgende om verder te gaan.
+# ^ClickInstall
+Klik op Installeer om die installasie te begin.
+# ^ClickUninstall
+Klik op Verwyder om die verwydering te begin.
+# ^Name
+Naam
+# ^Completed
+Voltooid
+# ^LicenseText
+Lees die lisensieooreenkoms voordat u $(^NameDA) installeer. Klik op Regso as u die ooreenkoms aanvaar.
+# ^LicenseTextCB
+Lees die lisensieooreenkoms voordat u $(^NameDA) installeer. Merk die blokkie hieronder as u die ooreenkoms aanvaar. $_CLICK
+# ^LicenseTextRB
+Lees die lisensieooreenkoms voordat u $(^NameDA) installeer. Kies die eerste keuse hieronder as u die ooreenkoms aanvaar. $_CLICK
+# ^UnLicenseText
+Lees die lisensieooreenkoms voordat u $(^NameDA) verwyder. Klik op Regso als u die ooreenkoms aanvaar.
+# ^UnLicenseTextCB
+Lees die lisensieooreenkoms voordat u $(^NameDA) verwyder. Merk die blokkie hieronder as u die ooreenkoms aanvaar. $_CLICK
+# ^UnLicenseTextRB
+Lees die lisensieooreenkoms voordat u $(^NameDA) verwyder. KIes die eerste keuse hieronder as u die ooreenkoms aanvaar. $_CLICK
+# ^Custom
+Aangepast
+# ^ComponentsText
+Kies die komponente wat u wil installeer en deselekteer dié wat u nie wil installeer nie. $_CLICK
+# ^ComponentsSubText1
+Kies die installasietipe:
+# ^ComponentsSubText2_NoInstTypes
+Kies die komponente wat geïnstalleer moet word:
+# ^ComponentsSubText2
+Of kies die komponente wat geïnstalleer moet word:
+# ^UnComponentsText
+Kies die komponente wat u wil verwyder en deselekteer dié wat u nie wil verwyder nie. $_CLICK
+# ^UnComponentsSubText1
+Kies die verwyderingstipe:
+# ^UnComponentsSubText2_NoInstTypes
+Kies die komponente wat verwyder moet word:
+# ^UnComponentsSubText2
+Of kies die komponente wat verwyder moet word:
+# ^DirText
+$(^NameDA) sal in die volgende gids geïnstalleer word. Om elders te installeer, klik op Blaai en kies 'n ander een. $_CLICK
+# ^DirSubText
+Installasiegids
+# ^DirBrowseText
+Kies die gids om $(^NameDA) in te installeer:
+# ^UnDirText
+$(^NameDA) gaan uit die volgende gids verwyder word. Om van elders af te verwyder, klik op Blaai en kies 'n ander gids. $_CLICK
+# ^UnDirSubText
+""
+# ^UnDirBrowseText
+Kies die gids om $(^NameDA) uit te verwyder:
+# ^SpaceAvailable
+"Beskikbare spasie: "
+# ^SpaceRequired
+"Vereiste spasie: "
+# ^UninstallingText
+$(^NameDA) sal uit die volgende gids verwyder word. $_CLICK
+# ^UninstallingSubText
+Verwydering uit:
+# ^FileError
+Fout met skryf na lêer: \r\n\r\n$0\r\n\r\nKlik Staak om de installasie te stop,\r\nProbeer weer om weer te probeer of\r\nIgnoreer om dié lêer oor te slaan.
+# ^FileError_NoIgnore
+Fout met skryf na lêer: \r\n\r\n$0\r\n\r\nKlik Probeer weer om op nuut te probeer, of \r\nKanselleer om die installasie te stop.
+# ^CantWrite
+"Kon nie skyf nie: "
+# ^CopyFailed
+Kopiëring het misluk
+# ^CopyTo
+"Kopieer na "
+# ^Registering
+"Registreer tans: "
+# ^Unregistering
+"Deregistreer tans: "
+# ^SymbolNotFound
+"Kon nie simbool vind nie: "
+# ^CouldNotLoad
+"Kon nie laai nie: "
+# ^CreateFolder
+"Skep gids: "
+# ^CreateShortcut
+"Maak kortpad: "
+# ^CreatedUninstaller
+"Verwyderingsprogram gemaak: "
+# ^Delete
+"Verwyder lêer: "
+# ^DeleteOnReboot
+"Verwyder na herbegin van rekenaar: "
+# ^ErrorCreatingShortcut
+"Fout met maak van kortpad: "
+# ^ErrorCreating
+"Fout met skep: "
+# ^ErrorDecompressing
+Fout met uitpak van data! Korrupte installasielêer?
+# ^ErrorRegistering
+Fout met registrasie van DLL
+# ^ExecShell
+"ExecShell: "
+# ^Exec
+"Voer uit: "
+# ^Extract
+"Pak uit: "
+# ^ErrorWriting
+"Uitpak: fout met skryf na lêer "
+# ^InvalidOpcode
+Installasieprogram korrup: ongeldige opcode
+# ^NoOLE
+"Geen OLE vir: "
+# ^OutputFolder
+"Afvoergids: "
+# ^RemoveFolder
+"Verwyder gids: "
+# ^RenameOnReboot
+"Hernoem na herbegin van rekenaar: "
+# ^Rename
+"Hernoem: "
+# ^Skipped
+"Oorgeslaan: "
+# ^CopyDetails
+Kopieer detail na knipbord
+# ^LogInstall
+Boekstaaf die installasieproses
+# ^Byte
+G
+# ^Kilo
+K
+# ^Mega
+M
+#  ^Giga
+G

+ 121 - 0
nsis/NSIS/Contrib/Language files/Afrikaans.nsh

@@ -0,0 +1,121 @@
+;Language: Afrikaans (1078)
+;By Friedel Wolff
+
+!insertmacro LANGFILE "Afrikaans" = "Afrikaans" =
+
+!ifdef MUI_WELCOMEPAGE
+  ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Welkom by die $(^NameDA) Installasieslimmerd"
+  ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Hierdie slimmerd lei mens deur die installasie van $(^NameDA).$\r$\n$\r$\nDit word aanbeveel dat u alle ander programme afsluit voor die begin van die installasie. Dit maak dit moontlik om die relevante stelsellêers op te dateer sonder om die rekenaar te herlaai.$\r$\n$\r$\n$_CLICK"
+!endif
+
+!ifdef MUI_UNWELCOMEPAGE
+  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Welkom by die $(^NameDA) Verwyderingslimmerd"
+  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Hierdie slimmerd lei mens deur die verwydering van $(^NameDA).$\r$\n$\r$\nVoor die verwydering begin word, maak seker dat $(^NameDA) nie loop nie.$\r$\n$\r$\n$_CLICK"
+!endif
+
+!ifdef MUI_LICENSEPAGE
+  ${LangFileString} MUI_TEXT_LICENSE_TITLE "Lisensie-ooreenkoms"
+  ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Lees die lisensie-ooreenkoms voordat u $(^NameDA) installeer."
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Klik op Regso om verder te gaan as u die ooreenkoms aanvaar. U moet die ooreenkoms aanvaar om $(^NameDA) te installeer."
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Merk die blokkie hier onder as u die ooreenkoms aanvaar. U moet die ooreenkoms aanvaar om $(^NameDA) te installeer. $_CLICK"
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Kies die eerste keuse hieronder as u die ooreenkoms aanvaar. U moet die ooreenkoms aanvaar om $(^NameDA) te installeer. $_CLICK"
+!endif
+
+!ifdef MUI_UNLICENSEPAGE
+  ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Lisensie-ooreenkoms"
+  ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Lees die lisensie-ooreenkoms voordat u $(^NameDA) verwyder."
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Klik op Regso om verder te gaan as u die ooreenkoms aanvaar. U moet die ooreenkoms aanvaar om $(^NameDA) te verwyder."
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Merk die kiesblokkie hieronder as u die ooreenkoms aanvaar. U moet die ooreenkoms aanvaar om $(^NameDA) te verwyder."
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Kies die eerste keuse hieronder as u die ooreenkoms aanvaar. U moet die ooreenkoms aanvaar om $(^NameDA) te verwyder."
+!endif
+
+!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE
+  ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Druk op Page Down om die res van die ooreenkoms te sien."
+!endif
+
+!ifdef MUI_COMPONENTSPAGE
+  ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Kies komponente"
+  ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Kies watter komponente van $(^NameDA) geïnstalleer moet word."
+!endif
+
+!ifdef MUI_UNCOMPONENTSPAGE
+  ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Kies komponente"
+  ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Kies watter komponente van $(^NameDA) verwyder moet word."
+!endif
+
+!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE
+  ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Beskrywing"
+  !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE
+    ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Beweeg die muis oor 'n komponent om sy beskrywing te sien."
+  !else
+    ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Kies 'n komponent om sy beskrywing te sien."
+  !endif
+!endif
+
+!ifdef MUI_DIRECTORYPAGE
+  ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Kies installasieplek"
+  ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Kies die gids waarin u $(^NameDA) wil installeer."
+!endif
+
+!ifdef MUI_UNDIRECTORYPAGE
+  ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Kies verwyderinggids"
+  ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Kies die gids waaruit u $(^NameDA) wil verwyder."
+!endif
+
+!ifdef MUI_INSTFILESPAGE
+  ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Installeer tans"
+  ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Wag asb. terwyl $(^NameDA) geïnstalleer word."
+  ${LangFileString} MUI_TEXT_FINISH_TITLE "Installasie voltooid"
+  ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Die installasie is suksesvol voltooi."
+  ${LangFileString} MUI_TEXT_ABORT_TITLE "Installasie gestaak"
+  ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Die installasie is nie suksesvol voltooi nie."
+!endif
+
+!ifdef MUI_UNINSTFILESPAGE
+  ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Verwyder tans"
+  ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Wag asb. terwyl $(^NameDA) van u rekenaar verwyder word."
+  ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Verwydering voltooi"
+  ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Verwydering is suksesvol voltooi."
+  ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Verwydering gestaak"
+  ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Verwydering is nie suksesvol voltooi nie."
+!endif
+
+!ifdef MUI_FINISHPAGE
+  ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Voltooi van die $(^NameDA) Installasieslimmerd"
+  ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) is geïnstalleer op uw rekenaar.$\r$\n$\r$\nKlik op Voltooi om hierdie slimmerd af te sluit."
+  ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Die rekenaar moet oorbegin word om die installasie van $(^NameDA) te voltooi. Wil u nou oorbegin?"
+!endif
+
+!ifdef MUI_UNFINISHPAGE
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Voltooi van die $(^NameDA) Verwyderingslimmerd"
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) is van u rekenaar verwyder.$\r$\n$\r$\nKlik op Voltooi om hierdie slimmerd af te sluit."
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Die rekenaar moet oorbegin word om die verwydering van $(^NameDA) te voltooi. Wil u nou oorbegin?"
+!endif
+
+!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE
+  ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Begin nou oor"
+  ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Ek wil later self oorbegin"
+  ${LangFileString} MUI_TEXT_FINISH_RUN "&Laat loop $(^NameDA)"
+  ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Wys Leesmy-lêer"
+  ${LangFileString} MUI_BUTTONTEXT_FINISH "&Voltooi"  
+!endif
+
+!ifdef MUI_STARTMENUPAGE
+  ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Kies gids in Begin-kieslys"
+  ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Kies 'n gids in die Begin-kieslys vir $(^NameDA) se kortpaaie."
+  ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Kies die gids in die Begin-kieslys waarin die program se kortpaaie geskep moet word. U kan ook 'n nuwe naam gee om 'n nuwe gids te skep."
+  ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Moenie kortpaaie maak nie"
+!endif
+
+!ifdef MUI_UNCONFIRMPAGE
+  ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Verwyder $(^NameDA)"
+  ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Verwyder $(^NameDA) van u rekenaar."
+!endif
+
+!ifdef MUI_ABORTWARNING
+  ${LangFileString} MUI_TEXT_ABORTWARNING "Wil u definitief die installasie van $(^Name) afsluit?"
+!endif
+
+!ifdef MUI_UNABORTWARNING
+  ${LangFileString} MUI_UNTEXT_ABORTWARNING "Wil u definitief die verwydering van $(^Name) afsluit?"
+!endif

+ 191 - 0
nsis/NSIS/Contrib/Language files/Albanian.nlf

@@ -0,0 +1,191 @@
+# Header, don't edit
+NLF v6
+# Start editing here
+# Language ID
+1052
+# Font and size - dash (-) means default
+-
+-
+# Codepage - dash (-) means ANSI code page
+1250
+# RTL - anything else than RTL means LTR
+-
+# Përkthimi nga Besnik Bleta, besnik@programeshqip.org
+# ^Branding
+Sistemi Nullsoft për Instalime %s
+# ^SetupCaption
+Rregullimi i $(^Name)
+# ^UninstallCaption
+Çinstalimi i $(^Name)
+# ^LicenseSubCaption
+: Marrëveshje Licence
+# ^ComponentsSubCaption
+: Mundësi Instalimi
+# ^DirSubCaption
+: Dosje Instalimi
+# ^InstallingSubCaption
+: Po instalohet
+# ^CompletedSubCaption
+: U plotësua
+# ^UnComponentsSubCaption
+: Mundësi Çinstalimi
+# ^UnDirSubCaption
+: Dosje Çinstalimi
+# ^ConfirmSubCaption
+: Ripohim
+# ^UninstallingSubCaption
+: Po çinstalohet
+# ^UnCompletedSubCaption
+: U plotësua
+# ^BackBtn
+< &Mbrapsht
+# ^NextBtn
+&Tjetri >
+# ^AgreeBtn
+&Pajtohem
+# ^AcceptBtn
+&I pranoj kushtet e Marrëveshjes së Licensës
+# ^DontAcceptBtn
+&Nuk i pranoj kushtet e Marrëveshjes së Licensës
+# ^InstallBtn
+&Instaloje
+# ^UninstallBtn
+&Çinstaloje
+# ^CancelBtn
+Anuloje
+# ^CloseBtn
+&Mbylle
+# ^BrowseBtn
+Sh&fletoni...
+# ^ShowDetailsBtn
+Shfaq &hollësi
+# ^ClickNext
+Klikoni Tjetri për të vazhduar.
+# ^ClickInstall
+Për të filluar instalimin klikoni Instaloje.
+# ^ClickUninstall
+Për të filluar çinstalimin klikoni Çinstaloje.
+# ^Name
+Emër
+# ^Completed
+U plotësua
+# ^LicenseText
+Ju lutem, para instalimit të $(^NameDA), shqyrtoni marrëveshjen e licencës. Nëse i pranoni tërë kushtet e marrëveshjes, klikoni Pajtohem.
+# ^LicenseTextCB
+Ju lutem, para instalimit të $(^NameDA), shqyrtoni marrëveshjen e licensës. Nëse i pranoni tërë kushtet e marrëveshjes, klikoni kutizën më poshtë. $_CLICK
+# ^LicenseTextRB
+Ju lutem, para instalimit të $(^NameDA), shqyrtoni marrëveshjen e licensës. Nëse i pranoni tërë kushtet e marrëveshjes, përzgjidhni mundësinë e parë më poshtë. $_CLICK
+# ^UnLicenseText
+Ju lutem, para çinstalimit të $(^NameDA), shqyrtoni marrëveshjen e licensës. Nëse i pranoni tërë kushtet e marrëveshjes, klikoni Pajtohem.
+# ^UnLicenseTextCB
+Ju lutem, para çinstalimit të $(^NameDA), shqyrtoni marrëveshjen e licensës. Nëse i pranoni tërë kushtet e marrëveshjes, klikoni kutizën më poshtë. $_CLICK
+# ^UnLicenseTextRB
+Ju lutem, para çinstalimit të $(^NameDA), shqyrtoni marrëveshjen e licensës. Nëse i pranoni tërë kushtet e marrëveshjes, përzgjidhni mundësinë e parë më poshtë. $_CLICK
+# ^Custom
+Vetjake
+# ^ComponentsText
+U vini shenjë përbërësve që doni të instalohen dhe hiquani shenjën  përbërësvet që nuk doni të instalohen. $_CLICK
+# ^ComponentsSubText1
+Përzgjidhni llojin e instalimit:
+# ^ComponentsSubText2_NoInstTypes
+Përzgjidhni përbërësit për instalim:
+# ^ComponentsSubText2
+Ose, përzgjidhni përbërësit e mundshëm që doni të instalohen:
+# ^UnComponentsText
+U vini shenjë përbërësve që doni të çinstalohen dhe hiquni shenjën përbërësve që nuk doni të çinstalohen. $_CLICK
+# ^UnComponentsSubText1
+Përzgjidhni llojin e çinstalimit:
+# ^UnComponentsSubText2_NoInstTypes
+Përzgjidhni përbërësit për çinstalim:
+# ^UnComponentsSubText2
+Ose, përzgjidhni përbërësit e mundshëm që doni të çinstalohen:
+# ^DirText
+Rregullimi do ta instalojë $(^NameDA) në dosjen vijuese. Për instalim në një dosje tjetër, klikoni Shfletoni dhe përzgjidhni një tjetër dosje. $_CLICK
+# ^DirSubText
+Dosje Vendmbërritje
+# ^DirBrowseText
+Përzgjidhni dosjen ku të instalohet $(^NameDA):
+# ^UnDirText
+Rregullimi do të çinstalojë $(^NameDA) prej dosjes vijuese. Për çinstalim prej një dosjeje tjetër, klikoni Shfletoni dhe përzgjidhni një tjetër dosje. $_CLICK
+# ^UnDirSubText
+""
+# ^UnDirBrowseText
+Përzgjidhni dosjen prej nga ku të çinstalohet $(^NameDA):
+# ^SpaceAvailable
+"Hapësirë e mundshme: "
+# ^SpaceRequired
+"Hapësirë e nevojshme: "
+# ^UninstallingText
+$(^NameDA) do të çinstalohet prej dosjes vijuese. $_CLICK
+# ^UninstallingSubText
+Po çinstalohet prej:
+# ^FileError
+Gabim në hapje kartele për shkrim: \r\n\r\n$0\r\n\r\nKlikoni Ndërprite për të ndalur instalimin,\r\nRiprovo për të provuar sërish, ose\r\nShpërfille për të sanashkaluar këtë kartelë.
+# ^FileError_NoIgnore
+Gabim në hapje kartele për shkrim: \r\n\r\n$0\r\n\r\nKlikoni Riprovo për të provuar sërish, ose\r\nAnulo për të ndalur instalimin.
+# ^CantWrite
+"S'shkruaj dot: "
+# ^CopyFailed
+Kopjimi dështoi
+# ^CopyTo
+"Kopjo tek "
+# ^Registering
+"Regjistrim: "
+# ^Unregistering
+"Çregjistrim: "
+# ^SymbolNotFound
+"S'u gjet dot simbol: "
+# ^CouldNotLoad
+"S'u ngarkua dot: "
+# ^CreateFolder
+"Krijo dosje: "
+# ^CreateShortcut
+"Krijo shkurtore: "
+# ^CreatedUninstaller
+"Krijo çinstalues: "
+# ^Delete
+"Fshi kartelë: "
+# ^DeleteOnReboot
+"Fshi gjatë rinisjes: "
+# ^ErrorCreatingShortcut
+"Gabim në krijim shkurtoresh: "
+# ^ErrorCreating
+"Gabim në krijimin e: "
+# ^ErrorDecompressing
+Gabim në çngjeshje të dhënash! Instalues i dëmtuar?
+# ^ErrorRegistering
+Gabim në regjistrim DLL-je
+# ^ExecShell
+"ExecShell: "
+# ^Exec
+"Ekzekuto: "
+# ^Extract
+"Përfto: "
+# ^ErrorWriting
+"Përftim: gabim në shkrim te kartela "
+# ^InvalidOpcode
+Instalues i dëmtuar: opcode i pavlefshëm
+# ^NoOLE
+"Pa OLE për: "
+# ^OutputFolder
+"Dosje përfundimesh: "
+# ^RemoveFolder
+"Hiq dosjen: "
+# ^RenameOnReboot
+"Riemërtoje gjatë rinisjes: "
+# ^Rename
+"Riemërtoje: "
+# ^Skipped
+"U anashkalua: "
+# ^CopyDetails
+Kopjo Hollësira Te Clipboard
+# ^LogInstall
+Regjistro procesin e instalimit
+# ^Byte
+B
+# ^Kilo
+K
+# ^Mega
+M
+# ^Giga
+G

+ 129 - 0
nsis/NSIS/Contrib/Language files/Albanian.nsh

@@ -0,0 +1,129 @@
+;Language: Albanian (1052)
+;Translation Besnik Bleta, besnik@programeshqip.org
+
+!insertmacro LANGFILE "Albanian" = "Shqip" =
+
+!ifdef MUI_WELCOMEPAGE
+  ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Mirësevini te Rregullimi i $(^NameDA)"
+  ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Ky do t'ju udhëheqë gjatë instalimit të $(^NameDA).$\r$\n$\r$\nKëshillohet që të mbyllni tërë zbatimet e tjera para se të nisni Rregullimin. Kjo bën të mundur përditësimin e kartelave të rëndësishme të sistemit pa u dashur të riniset kompjuteri juaj.$\r$\n$\r$\n$_CLICK"
+!endif
+
+!ifdef MUI_UNWELCOMEPAGE
+  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Mirësevini te Çinstalimi i $(^NameDA)"
+  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Ky do t'ju udhëheqë gjatë çinstalimit të $(^NameDA).$\r$\n$\r$\nPara nisjes së çinstalimit, sigurohuni që $(^NameDA) nuk është duke xhiruar.$\r$\n$\r$\n$_CLICK"
+!endif
+
+!ifdef MUI_LICENSEPAGE
+  ${LangFileString} MUI_TEXT_LICENSE_TITLE "Marrëveshje Licence"
+  ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Ju lutem shqyrtoni kushtet e licencës përpara se të instaloni $(^NameDA)."
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Nëse i pranoni kushtet e marrëveshjes, klikoni Pajtohem për të vazhduar. Duhet ta pranoni marrëveshjen për të instaluar $(^NameDA)."
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Nëse pranoni kushtet e marrëveshjes, klikoni kutizën më poshtë. Duhet të pranoni marrëveshjen për të instaluar $(^NameDA). $_CLICK"
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Nëse pranoni kushtet e marrëveshjes, përzgjidhni më poshtë mundësinë e parë. Duhet të pranoni marrëveshjen për të instaluar $(^NameDA). $_CLICK"
+!endif
+
+!ifdef MUI_UNLICENSEPAGE
+  ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Marrëveshje Licence"
+  ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Ju lutem shqyrtoni kushtet e licencës përpara çinstalimit të $(^NameDA)."
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Nëse i pranoni kushtet e marrëveshjes, klikoni Pajtohem për të vazhduar. Duhet të pranoni marrëveshjen për të çinstaluar $(^NameDA)."
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Nëse pranoni kushtet e marrëveshjes, klikoni kutizën më poshtë. Duhet të pranoni marrëveshjen për të çinstaluar $(^NameDA). $_CLICK"
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Nëse pranoni kushtet e marrëveshjes, përzgjidhni mundësinë e parë më poshtë. Duhet të pranoni marrëveshjen për të çinstaluar $(^NameDA). $_CLICK"
+!endif
+
+!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE
+  ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Shtypni Page Down për të parë pjesën e mbetur të marrëveshjes."
+!endif
+
+!ifdef MUI_COMPONENTSPAGE
+  ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Përzgjidhni Përbërës"
+  ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Zgjidhni cilat anë të $(^NameDA) doni të instalohen."
+!endif
+
+!ifdef MUI_UNCOMPONENTSPAGE
+  ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Zgjidhni Përbërësa"
+  ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Zgjidhni cilat anë të $(^NameDA) doni të çinstalohen."
+!endif
+
+!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE
+  ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Përshkrim"
+  !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE
+    ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Për të parë përshkrimin e një përbërësi, vendosni miun përsipër tij."
+  !else
+    #FIXME:MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO
+  !endif
+!endif
+
+!ifdef MUI_DIRECTORYPAGE
+  ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Zgjidhni Vend Instalimi"
+  ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Zgjidhni dosjen tek e cila të instalohet $(^NameDA)."
+!endif
+
+!ifdef MUI_UNDIRECTORYPAGE
+  ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Zgjidhni Vend Çinstalimi"
+  ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Zgjidhni dosjen prej së cilës të çinstalohet $(^NameDA)."
+!endif
+
+!ifdef MUI_INSTFILESPAGE
+  ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Po instalohet"
+  ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Ju lutem prisni ndërkohë që $(^NameDA) instalohet."
+  ${LangFileString} MUI_TEXT_FINISH_TITLE "Instalim i Plotësuar"
+  ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Rregullimi u plotësua me sukses."
+  ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalimi u Ndërpre"
+  ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Rregullimi nuk u plotësua me sukses."
+!endif
+
+!ifdef MUI_UNINSTFILESPAGE
+  ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Çinstalim"
+  ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Ju lutem prisni ndërsa $(^NameDA) çinstalohet."
+  ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Çinstalim i Plotë"
+  ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Çinstalimi u plotësua me sukses."
+  ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Çinstalimi u Ndërpre"
+  ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Çinstalimi nuk plotësua me sukses."
+!endif
+
+!ifdef MUI_FINISHPAGE
+  ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Po plotësoj Rregullimin e $(^NameDA)"
+  ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) u instalua në kompjuterin tuaj.$\r$\n$\r$\nPër mbylljen e procesit, klikoni Përfundoje."
+  ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Që të mund të plotësohet instalimi i $(^NameDA) kompjuteri juaj duhet të riniset. Doni ta rinisni tani?"
+!endif
+
+!ifdef MUI_UNFINISHPAGE
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Po plotësoj Çinstalimin e $(^NameDA)"
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) u çinstalua prej kompjuterit tuaj.$\r$\n$\r$\nPër mbylljen e procesit, klikoni Përfundoje."
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Kompjuteri juaj duhet të riniset që të mund të plotësohet çinstalimi i $(^NameDA). Doni ta rinisni tani?"
+!endif
+
+!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE
+  ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Rinise tani"
+  ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Dua ta rinis dorazi më vonë"
+  ${LangFileString} MUI_TEXT_FINISH_RUN "&Nis $(^NameDA)"
+  ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Shfaq Readme"
+  ${LangFileString} MUI_BUTTONTEXT_FINISH "&Përfundoje"  
+!endif
+
+!ifdef MUI_STARTMENUPAGE
+  ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Zgjidhni Dosje Menuje Start"
+  ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Zgjidhni një dosje Menuje Start për shkurtore $(^NameDA)."
+  ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Përzgjidhni dosjen e Menusë Start në të cilën do të donit të krijonit shkurtoret për programin. Mundeni edhe të jepni një emër për të krijuar një dosje të re."
+  ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Mos krijo shkurtore"
+!endif
+
+!ifdef MUI_UNCONFIRMPAGE
+  ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Çinstalo $(^NameDA)"
+  ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Hiqeni $(^NameDA) prej kompjuterit tuaj."
+!endif
+
+!ifdef MUI_ABORTWARNING
+  ${LangFileString} MUI_TEXT_ABORTWARNING "Jeni i sigurt që doni të dilni nga Rregullimi i $(^Name)?"
+!endif
+
+!ifdef MUI_UNABORTWARNING
+  ${LangFileString} MUI_UNTEXT_ABORTWARNING "Jeni i sigurt që doni të dilni nga Çinstalimi i $(^Name)?"
+!endif
+
+!ifdef MULTIUSER_INSTALLMODEPAGE
+  ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Zgjidhni Përdoruesa"
+  ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Zgjidhni për cilët përdoruesa doni të instalohet $(^NameDA)."
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Përzgjidhni në doni të instalohet $(^NameDA) vetëm për veten tuaj apo për tërë përdoruesit e këtij kompjuteri. $(^ClickNext)"
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Instaloje për këdo në këtë kompjuter"
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Instaloje vetëm për mua"
+!endif

+ 190 - 0
nsis/NSIS/Contrib/Language files/Arabic.nlf

@@ -0,0 +1,190 @@
+# Header, don't edit
+NLF v6
+# Language ID
+1025
+# Font and size - dash (-) means default
+-
+-
+# Codepage - dash (-) means ANSI code page
+1256
+# RTL - anything else than RTL means LTR
+RTL
+# Translation by asdfuae@msn.com, updated by Rami Kattan
+# ^Branding
+نظام التنصيب نلسوفت %s
+# ^SetupCaption
+تنصيب $(^Name)
+# ^UninstallCaption
+إزالة $(^Name)
+# ^LicenseSubCaption
+إتفاقية‏ الترخيص :
+# ^ComponentsSubCaption
+خيارات التنصيب :
+# ^DirSubCaption
+مجلد التنصيب :
+# ^InstallingSubCaption
+تنصيب :
+# ^CompletedSubCaption
+إنتهى :
+# ^UnComponentsSubCaption
+خيارات الإزالة :
+# ^UnDirSubCaption
+مجلد الإزالة :
+# ^ConfirmSubCaption
+تأكيد :
+# ^UninstallingSubCaption
+إزالة :
+# ^UnCompletedSubCaption
+إنتهى :
+# ^BackBtn
+< ال&سابق
+# ^NextBtn
+ال&تالي >
+# ^AgreeBtn
+موافق&
+# ^AcceptBtn
+&أوافق على شروط اتفاقية الترخيص
+# ^DontAcceptBtn
+&لا أوافق على شروط اتفاقية الترخيص
+# ^InstallBtn
+&تنصيب
+# ^UninstallBtn
+&إزالة
+# ^CancelBtn
+إلغاء
+# ^CloseBtn
+إ&غلاق
+# ^BrowseBtn
+&عرض...
+# ^ShowDetailsBtn
+إ&ظهار التفاصيل
+# ^ClickNext
+إضغط على التالي للمتابعة.
+# ^ClickInstall
+إضغط على تنصيب لتشغيل التنصيب.
+# ^ClickUninstall
+إضغط على إزالة لتشغيل الإزالة.
+# ^Name
+الإسم
+# ^Completed
+إنتهى
+# ^LicenseText
+الرجاء مراجعة إتفاقية الترخيص قبل تنصيب $(^NameDA). عند الموافقة على جميع شروط الإتفاقية، إضغط موافق.
+# ^LicenseTextCB
+الرجاء مراجعة إتفاقية الترخيص قبل تنصيب $(^NameDA). عند الموافقة على جميع شروط الإتفاقية، إضغط على مربع المؤشر التالي. $_CLICK.
+# ^LicenseTextRB
+الرجاء مراجعة إتفاقية الترخيص قبل تنصيب $(^NameDA). عند الموافقة على جميع شروط الإتفاقية، إختر الخيار الأول التالي. $_CLICK
+# ^UnLicenseText
+الرجاء مراجعة إتفاقية الترخيص قبل إزالة $(^NameDA). عند الموافقة على جميع شروط الإتفاقية، إضغط موافق.
+# ^UnLicenseTextCB
+الرجاء مراجعة إتفاقية الترخيص قبل إزالة $(^NameDA). عند الموافقة على جميع شروط الإتفاقية، اضغط على مربع المؤشر التالي. $_CLICK
+# ^UnLicenseTextRB
+الرجاء مراجعة إتفاقية الترخيص قبل إزالة $(^NameDA). عند الموافقة على جميع شروط الإتفاقية، إختر الخيار الأول التالي. $_CLICK
+# ^Custom
+إختياري
+# ^ComponentsText
+علّم المكونات المراد تنصيبها وإزل العلامة عن المكونات الغير مراد تنصيبها. $_CLICK
+# ^ComponentsSubText1
+إختر نوع التنصيب:
+# ^ComponentsSubText2_NoInstTypes
+إختر المكونات للتنصيب:
+# ^ComponentsSubText2
+أو، قم بإختيار المكونات الإختيارية المراد تنصيبها:
+# ^UnComponentsText
+علّم المكونات المراد إزالتها وأزل العلامة عن المكونات الغير مراد إزالتها. $_CLICK
+# ^UnComponentsSubText1
+إختر نوع الإزالة:
+# ^UnComponentsSubText2_NoInstTypes
+إختر المكونات للإزالة:
+# ^UnComponentsSubText2
+أو، إختر المكونات الإختيارية المراد إزالتها:
+# ^DirText
+سيتم تنصيب $(^NameDA) في المجلد التالي. للتنصيب في مجلد آخر، إضغط عرض وإختر مجلد آخر. $_CLICK
+# ^DirSubText
+مجلد الهدف
+# ^DirBrowseText
+إختر المجلد لتنصيب $(^NameDA) فيه:
+# ^UnDirText
+سيتم إزالة $(^NameDA) من المجلد التالي. للإزالة من مجلد آخر، إضغط عرض وأختر مجلد آخر. $_CLICK
+# ^UnDirSubText
+""
+# ^UnDirBrowseText
+إختر المجلد لإزالة $(^NameDA) منه:
+# ^SpaceAvailable
+"المساحة المتوفرة: "
+# ^SpaceRequired
+"المساحة المطلوبة: "
+# ^UninstallingText
+سيتم إزالة $(^NameDA) من المجلد التالي. $_CLICK
+# ^UninstallingSubText
+إزالة من:
+# ^FileError
+حدث خلل أثناء فتح ملف للكتابة: \r\n\t\"$0\"\r\nإضغط إلغاء لإلغاء التنصيب،\r\nمحاولة لإعادة محاولة كتابة الملف،\r\n تجاهل لتخطي الملف
+# ^FileError_NoIgnore
+حدث خلل أثناء فتح ملف للكتابة: \r\n\t\"$0\"\r\nإضغط محاولة لإعادة محاولة كتابة الملف، أو\r\nإلغاء لإلغاء التنصيب
+# ^CantWrite
+"لا يستطيع الكتابة: "
+# ^CopyFailed
+فشل النسخ
+# ^CopyTo
+"نسخ إلى"
+# ^Registering
+"تسجيل: "
+# ^Unregistering
+"إلغاء تسجيل: "
+# ^SymbolNotFound
+"لم يتمكن من إيجاد الرمز :"
+# ^CouldNotLoad
+"لم يتمكن من تحميل :"
+# ^CreateFolder
+"إنشاء مجلد"
+# ^CreateShortcut
+"إنشاء إختصار: "
+# ^CreatedUninstaller
+"إنشاء مزيل: "
+# ^Delete
+"حذف ملف: "
+# ^DeleteOnReboot
+"حذف بعد إعادة التشغيل: "
+# ^ErrorCreatingShortcut
+"خلل أثناء إنشاء إختصار: "
+# ^ErrorCreating
+"خلل أثناء إنشاء :"
+# ^ErrorDecompressing
+خلل أثناء فتح البيانات المضغوطة! منصب تالف؟
+# ^ErrorRegistering
+خلل أثناء تسجيل DLL
+# ^ExecShell
+"تنفيذ ExecShell:"
+# ^Exec
+"تنفيذ: "
+# ^Extract
+"إستخراج: "
+# ^ErrorWriting
+"إستخراج: خلل أثناء الكتابة إلى ملف "
+# ^InvalidOpcode
+المنصّب تالف: شفرة غير صالحة
+# ^NoOLE
+"لا توجد OLE لـِ: "
+# ^OutputFolder
+"مجلد الإخراج: "
+# ^RemoveFolder
+"إزالة مجلد: "
+# ^RenameOnReboot
+"إعادة تسمية بعد إعادة التشغيل: "
+# ^Rename
+"إعادة تسمية: "
+# ^Skipped
+"تخطى: "
+# ^CopyDetails
+نسخ التفاصيل إلى الذاكرة
+# ^LogInstall
+سجّل عملية التنصيب
+# ^Byte
+بايت
+# ^Kilo
+كيلو
+# ^Mega
+ميغا
+# ^Giga
+جيغا

+ 130 - 0
nsis/NSIS/Contrib/Language files/Arabic.nsh

@@ -0,0 +1,130 @@
+;Language: Arabic (1025)
+;Translation by asdfuae@msn.com
+;updated by Rami Kattan
+
+!insertmacro LANGFILE "Arabic" = "العربية" "Al-Arabiyyah"
+
+!ifdef MUI_WELCOMEPAGE
+  ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "مرحبا بك في مرشد إعداد $(^NameDA)"
+  ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "سيساعدك هذا المرشد في تنصيب $(^NameDA).$\r$\n$\r$\nمن المفضل إغلاق جميع البرامج قبل التنصيب. سيساعد هذا في تجديد ملفات النظام دون الحاجة لإعادة تشغيل الجهاز.$\r$\n$\r$\n$_CLICK"
+!endif
+
+!ifdef MUI_UNWELCOMEPAGE
+  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "مرحبا بك في مرشد إزالة $(^NameDA) "
+  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "هذا المرشد سيدلّك أثناء إزالة $(^NameDA).$\r$\n$\r$\n قبل البدء بالإزالة، يرجى التأكد من أن $(^NameDA) غير شغّال.$\r$\n$\r$\n$_CLICK"
+!endif
+
+!ifdef MUI_LICENSEPAGE
+  ${LangFileString} MUI_TEXT_LICENSE_TITLE "إتفاقية‏ الترخيص"
+  ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "الرجاء مراجعة إتفاقية‏ الترخيص قبل تنصيب $(^NameDA)."
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "عند الموافقة على شروط الإتفاقية‏، إضغط أوافق للمتابعة. يجب الموافقة على الإتفاقية‏ لتنصيب $(^NameDA)."
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "عند الموافقة على شروط الإتفاقية‏، علّم مربع العلامة التالي. يجب الموافقة على الإتفاقية‏ لتنصيب $(^NameDA). $_CLICK"
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "عند الموافقة على شروط الإتفاقية، إختر الخيار الأول من التالي. يجب الموافقة على الإتفاقية لتنصيب $(^NameDA). $_CLICK"
+!endif
+
+!ifdef MUI_UNLICENSEPAGE
+  ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "إتفاقية الترخيص"
+  ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "الرجاء مراجعة شروط الترخيص قبل إزالة $(^NameDA)."
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "عند الموافقة على شروط الإتفاقية، إضغط على موافق. يجب الموافقة على الإتفاقية لإزالة $(^NameDA)."
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "عند الموافقة على شروط الإتفاقية، علّم المربع العلامة التالي. يجب الموافقة على الإتفاقية لإزالة $(^NameDA). $_CLICK"
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "عند الموافقة على شروط الإتفاقية، إختر الخيار الأول من التالي. يجب الموافقة على الإتفاقية لإزالة $(^NameDA). $_CLICK"
+!endif
+
+!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE
+  ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "إضعط مفتاح صفحة للأسفل لرؤية باقي الإتفاقية"
+!endif
+
+!ifdef MUI_COMPONENTSPAGE
+  ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "إختر المكونات"
+  ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "إختر ميزات $(^NameDA) المراد تنصيبها."
+!endif
+
+!ifdef MUI_UNCOMPONENTSPAGE
+  ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "إختر المكونات"
+  ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "إختر ميزات $(^NameDA) المراد إزالتها."
+!endif
+
+!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE
+  ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "الوصف"
+  !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE
+    ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "أشر بالفأرة فوق أحد المكونات لرؤية الوصف"
+  !else
+    #FIXME:MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO
+  !endif
+!endif
+
+!ifdef MUI_DIRECTORYPAGE
+  ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "إختر موقع التنصيب"
+  ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "إختر المجلد المراد تنصيب $(^NameDA) فيه."
+!endif
+
+!ifdef MUI_UNDIRECTORYPAGE
+  ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "إختر موقع المزيل"
+  ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "إختر المجلد الذي سيزال منه $(^NameDA)."
+!endif
+
+!ifdef MUI_INSTFILESPAGE
+  ${LangFileString} MUI_TEXT_INSTALLING_TITLE "تنصيب"
+  ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "الرجاء الإنتظار أثناء تنصيب $(^NameDA)."
+  ${LangFileString} MUI_TEXT_FINISH_TITLE "إنتهى التنصيب"
+  ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "إنتهت عملية التنصيب بنجاح."
+  ${LangFileString} MUI_TEXT_ABORT_TITLE "إلغاء التنصيب"
+  ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "لم ينتهي التنصيب بنجاح."
+!endif
+
+!ifdef MUI_UNINSTFILESPAGE
+  ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "إزالة"
+  ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "الرجاء الإنتظار أثناء إزالة $(^NameDA)."
+  ${LangFileString} MUI_UNTEXT_FINISH_TITLE "إنتهى"
+  ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "إنتهت عملية الإزالة بنجاح."
+  ${LangFileString} MUI_UNTEXT_ABORT_TITLE "إلغاء الإزالة"
+  ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "لم تنتهي الإزالة بنجاح."
+!endif
+
+!ifdef MUI_FINISHPAGE
+  ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "إنهاء مرشد إعداد $(^NameDA)"
+  ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "لقد تم تنصيب $(^NameDA) على الجهاز$\r$\n$\r$\nإضغط إنهاء لإغلاق مرشد الإعداد."
+  ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "يجب إعادة تشغيل الجهاز لإنهاء تنصيب $(^NameDA). هل تريد إعادة التشغيل الآن؟"
+!endif
+
+!ifdef MUI_UNFINISHPAGE
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "إنهاء مرشد إزالة $(^NameDA)"
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "لقد تم إزالة $(^NameDA) من الجهاز.$\r$\n$\r$\n إضغط إنهاء لإغلاق المرشد."
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "يجب إعادة تشغيل الجهاز لإنهاء إزالة $(^NameDA). هل تريد إعادة التشغيل الآن؟"
+!endif
+
+!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE
+  ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "أعد التشغيل الآن"
+  ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "أرغب في إعادة تشغيل الجهاز في وقت لاحق"
+  ${LangFileString} MUI_TEXT_FINISH_RUN "&شغل $(^NameDA)"
+  ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "اعرض& أقرأني"
+  ${LangFileString} MUI_BUTTONTEXT_FINISH "&إنهاء"  
+!endif
+
+!ifdef MUI_STARTMENUPAGE
+  ${LangFileString} MUI_TEXT_STARTMENU_TITLE "إختر مجلد قائمة ابدأ"
+  ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "إختر مجلد قائمة ابدأ لإختصارات $(^NameDA)."
+  ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "إختر المجلد في قائمة ابدأ الذي ستنشأ فيه إختصارات البرنامج. يمكن أيضا كتابة إسم لإنشاء مجلد جديد."
+  ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "لا تنشئ إختصارات"
+!endif
+
+!ifdef MUI_UNCONFIRMPAGE
+  ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "إزالة $(^NameDA)"
+  ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "إزالة $(^NameDA) من الجهاز."
+!endif
+
+!ifdef MUI_ABORTWARNING
+  ${LangFileString} MUI_TEXT_ABORTWARNING "هل أنت متأكد من إغلاق منصّب $(^Name)؟"
+!endif
+
+!ifdef MUI_UNABORTWARNING
+  ${LangFileString} MUI_UNTEXT_ABORTWARNING "هل أنت متأكد من أنك الخروج من مزيل $(^Name)؟"
+!endif
+
+!ifdef MULTIUSER_INSTALLMODEPAGE
+  ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "اختر المستخدمين"
+  ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "حدد لمن من المستخدمين تريد تركيب $(^NameDA)."
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "حدد لمن تريد تركيب $(^NameDA) لنفسك فقط أم لجميع مستخدمي الحاسب. $(^ClickNext)"
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "تركيب لجميع مستخدمي هذا الحاسب"
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "تركيب لي فقط"
+!endif

部分文件因为文件数量过多而无法显示