devbar.de

Icon

just code chunks

Wie Ripple an den Nerven rippelt

rippleDas Entwickeln in JavaScript und HTML5 ist teilweise abenteuerlich. Wer im Blackberry-Land unterwegs ist, soll laut Community den Ripple Emulator benutzen. Leider kommt das Ding aus dem Alpha- und Beta-Stadium nicht richtig heraus und kann sich auch nicht recht entscheiden ob es jetzt Entwicklungsumgebung oder Debugger sein möchte.

Wie man mit einer kleinen Batch das Build & Deploy aus Visual Studio erledigen kann, zeig ich hier. Das klappt sogar für Blackberry Smartphone und Tablet  und besser als mit Ripple.


Das Script

@echo off
:: -----------------------------------------------------------------
:: Default Settings

:: Target
:: 1 = Blackberry Playbook
:: 2 = Blackberry Smartphone
SET target=1

:: Web Inspector
:: J = ON, N = Off
SET web_inspector=N

:: Signaturpassword
:: Password to sign
SET sign=

:: Silent Generation
SET silent=N

:: Installation to device (Playbook only)
SET install=N
SET install_password=
SET install_device=

:: -----------------------------------------------------------------
:: SDKs

:: WebWorks Tablet SDK
SET path_webworks_tablet_sdk="D:\SDK\BlackBerry WebWorks SDK for TabletOS 2.2.0.5\bbwp"

:: WebWorks Smartphone SDK
SET path_webworks_smartphone_sdk="D:\SDK\BlackBerry WebWorks SDK 2.3.1.5"

:: -----------------------------------------------------------------
:: Tools

:: 7Zip
SET path_7zip="C:\Program Files\7-Zip\7z.exe"

:: -----------------------------------------------------------------
:: Exclude Directory

:: Exclude .svn, bin etc. folders
SET exclude_expression=-xr@exclude.txt

:: -----------------------------------------------------------------

:: Here is the Script! Stop editing here!

:: Project
SET path_project=%1
SET project=%2

IF "%path_project%"=="" GOTO exit_usage
IF "%project%"=="" GOTO exit_usage

:: Trying to get some initial variables from project
CALL %path_project%\vars.cmd
IF NOT EXIST %path_project% GOTO exit_wrong_project

IF "%silent%"=="J" GOTO automated

ECHO 1 :Blackberry Playbook
ECHO 2 :Blackberry Smartphone

:: Ask target
:ask_for_target
SET /P ask_target=Select a target [%target%]:
IF "%ask_target%"=="" GOTO ask_for_web_inspector
IF %ask_target% LSS 1 GOTO ask_for_target
IF %ask_target% GTR 2 GOTO ask_for_target
SET target=%ask_target%

:: Ask Web Inspector
:ask_for_web_inspector
SET /P ask_web_inspector=Activate Web Inspector? [%web_inspector%]:
IF "%ask_web_inspector%"=="" GOTO ask_for_sign
IF "%ask_web_inspector%"=="J" SET web_inspector=J
IF "%ask_web_inspector%"=="N" SET web_inspector=N

:: Ask for Signature
:ask_for_sign
SET /P sign=Password to sign:

:automated

:: Package
IF "%target%"=="1" SET package=%path_project%\Packages\Playbook
IF "%target%"=="2" SET package=%path_project%\Packages\Blackberry

IF NOT EXIST %package%\NUL MD %package%

IF "%target%"=="1" GOTO target_1
IF "%target%"=="2" GOTO target_2

:target_1
DEL %package%\*.zip 2> NUL
DEL %package%\*.bar 2> NUL

:: zip
%path_7zip% a -tzip %exclude_expression% "%package%\%project%.zip" %path_project%\*

:: inject the correct config.xml
MD %TEMP%\bb_webworks_build
COPY %path_project%\config.tablet.xml %TEMP%\bb_webworks_build\config.xml
%path_7zip% a -tzip "%package%\%project%.zip" %TEMP%\bb_webworks_build\config.xml
DEL %TEMP%\bb_webworks_build\config.xml
RD %TEMP%\bb_webworks_build

:: pack
IF "%web_inspector%"=="J" SET param_web_inspector=-d
IF NOT "%sign%"=="" SET param_sign=-g %sign%
%path_webworks_tablet_sdk%\bbwp "%package%\%project%.zip" %param_web_inspector% %param_sign% -o "%package%"

IF "%install%"=="J" %path_webworks_tablet_sdk%\blackberry-tablet-sdk\bin\blackberry-deploy.bat -installApp -password %install_password% -device %install_device% -package "%package%\%project%.bar"

GOTO exit

:target_2
DEL %package%\*.zip 2> NUL
IF NOT EXIST %package%\OTAInstall\NUL MD %package%\OTAInstall
IF NOT EXIST %package%\StandardInstall\NUL MD %package%\StandardInstall
DEL %package%\OTAInstall\*.cod 2> NUL
DEL %package%\OTAInstall\*.jad 2> NUL
DEL %package%\StandardInstall\*.cod 2> NUL
DEL %package%\StandardInstall\*.alx 2> NUL
DEL %package%\StandardInstall\*.csl 2> NUL
DEL %package%\StandardInstall\*.cso 2> NUL

:: zip
%path_7zip% a -tzip %exclude_expression% "%package%\%project%.zip" %path_project%\*

:: inject the correct config.xml
MD %TEMP%\bb_webworks_build
COPY %path_project%\config.smartphone.xml %TEMP%\bb_webworks_build\config.xml
%path_7zip% a -tzip "%package%\%project%.zip" %TEMP%\bb_webworks_build\config.xml
DEL %TEMP%\bb_webworks_build\config.xml
RD %TEMP%\bb_webworks_build

:: pack
IF "%web_inspector%"=="J" SET param_web_inspector=-d
IF NOT "%sign%"=="" SET param_sign=-g %sign%
%path_webworks_smartphone_sdk%\bbwp "%package%\%project%.zip" %param_web_inspector% %param_sign% -o "%package%"

GOTO exit

:exit_usage
ECHO Usage: %0 [path to project] [projectname]
GOTO exit

:exit_wrong_project
ECHO The specified project path does not exist.
GOTO exit

:exit

Einbinden in Visual Studio

Um das ganze jetzt aus Visual Studio aufrufen zu können, könnt ihr das Script als “Externes Tool” einrichten (unter Extras). Der Aufruf sollte dann etwa wie im Screenshot aussehen.

Visual Studio Externe Tools WebWorks Batch

Die exclude.txt

Im Visual Studio-Projektverzeichnis tummeln sich natürlich einige Dateien, die nicht ausgeliefert werden sollen. Um diese vom Zippen auszuschließen kann man eine exclude.txt anlegen und entsprechende Einträge hinzufügen.

.svn
bin
obj
Packages
Properties
Web.config
Web.Debug.config
Web.Release.config
config.xml
config.tablet.xml
config.smartphone.xml
*.cmd
*.csproj
*.csproj.user
*.lnk

 

Die vars.cmd

Manchmal kommt man in die Verlegenheit, dass man nicht immer signieren oder das Package auf das Playbook laden möchte. Um solche Steuerungen vorzunehmen, kann man im Projektverzeichnis eine vars.cmd anlegen. Das Script kann dann zum Vorbelegen einiger Einstellungen genutzt werden.

:: -----------------------------------------------------------------
:: Default Settings

:: Target
:: 1 = Blackberry Playbook
:: 2 = Blackberry Smartphone
SET target=1

:: Web Inspector
:: J = ON, N = Off
SET web_inspector=N

:: Signaturpassword
:: Password to sign
SET sign=

:: Silent Generation
SET silent=N

:: Project
SET project=CoolApp

:: Installation to device (Playbook only)
SET install=N
SET install_password=supersecret
SET install_device=258.0.0.1

 

Fazit

Das ganze ist natürlich Quick and Dirty, funktioniert für mich aber wesentlich besser als das Ripple Package & Deploy. Bitte benutzt das Script mit Vorsicht, da es in eurem Projektverzeichnis rumschreibt (den Packages Folder anlegt). Ich möchte nicht dafür verantwortlich gemacht werden wenn euer Source Control, Automatic Build oder was auch sonst noch so am Start ist, bei euch rumspinnt Zwinkerndes Smiley.

Category: Allgemein, JavaScript

Tagged: , , , , , , , ,


Leave a Reply

*

Facebook

Anzeigen

CodeWear