VDF-GUIdance logo



  Visual DataFlex Logo
  

Shared knowledge leads to accumulated knowledge

        Printer Friendly Page


Contribution Record ID passed is empty.

Crystal Reports XI Runtime Installer


by Peter van Mil

The only supported way to deploy Crystal Reports XI applications using the Report Designer Component (RDC) is using merge modules. In this document is described how to make a Windows Installer based setup package, that does nothing more or less than installing the Crystal Reports XI runtime to run a VDF 11.1 sample report. I have used the following tools: Crystal Report XI Developer Edition, updated merge modules, Orca and Installer2Go.

Crystal Report XI Developer Edition


For developing RDC based applications you need Crystal Reports XI Developer Edition or Crystal Reports XI for DataFlex. Both versions copy the necessary deployment files on your PC. CR XI for DataFlex includes the Connectivity Kit for Crystal Reports, that supports native DataFlex files.
scramjet proxy

Merge Modules


Business Objects put all the necessary files and settings for the Crystal Reports XI runtime in merge modules. Merge modules are components, that can be included in Windows Installer based packes. Crystal Reports XI needs the license keycode to be included in the installer, so I isn't possible to convert somehow the four merge modules into one installer.
Updated merge modules are available at http://support.businessobjects.com/fix/merge_modules.asp. Copy these files to C:\Program Files\Common Files\Merge Modules.

Orca


Orca is a Windows Installer package editor provided as part of the Windows Installer SDK. You will find it by looking for PSDK-x86.exe in Google. The title of the download site is confusing: "Windows Server 2003 SP1 Platform SDK Web Install". When you install PSDK-x86.exe you will find Orca.Msi at C:\Program Files\Microsoft Platform SDK\Bin. Install it and you will have a shortcut to Orca.exe.

With Orca you can open the file CrystalReports11_RDC_License.msm. It is tempting to change everything that is possible, but it might be better to change just one thing: the license keycode. In the left pane you can choose for property and in the right pane you can set the value of PIDKEY. This isn't the serial number, but the code with the format XXXXX-XXXXXXX-XXXXXXX-XXXX. Orca saves the code in the merge module.

Scramjet Proxy Today

Log request/response metadata to a stream processor (e.g., Kafka, file).

proxy.pipeline.each((chunk,  requestId, isRequest, url ) => 
  console.log(`[$requestId] $isRequest ? '→' : '←' $url – $chunk.length bytes`);
);

In the world of microservices and distributed systems, "latency" is a four-letter word. We spend hours optimizing database queries and refining code, only to bottleneck at the communication layer.

Enter Scramjet Proxy.

If you haven’t crossed paths with it yet, Scramjet Proxy is part of the broader Scramjet ecosystem—a suite designed to handle data streams with minimal overhead. But why should you add another proxy to your architecture? Let’s break it down. scramjet proxy

Building a basic Scramjet Proxy requires Node.js (v14+) and the Scramjet framework.

Package and deploy your code to the Scramjet Hub. This is typically done via the CLI.

# Example deployment command
si seq deploy ./my-app-package.tar.gz

Note the Instance ID returned by this command (e.g., instance-abc-123). Log request/response metadata to a stream processor (e

A scramjet proxy is a software system that mimics, mediates, or adapts traffic and behavior for scramjet-based architectures or software components. The term "scramjet" in software contexts has been used in multiple ways: as a project name, as an internal component name in distributed systems, or analogically referencing the high-speed, air-breathing scramjet engine to imply extreme performance. This monograph treats "scramjet proxy" broadly: as (1) a high-performance HTTP/TCP/UDP proxy optimized for very low latency and high throughput; (2) a middleware adaptor used with event-driven or edge compute platforms called Scramjet (or similarly named projects); and (3) a conceptual pattern for low-overhead, high-speed protocol translation and observability at the network edge.

-- scramjet.lua for VPP
function scramjet_inline(data)
    local payload = data:get_offset(42) -- skip eth+ip+tcp
    if payload:find("USER") then
        payload:gsub("USER", "X-USER")  -- mutate
        data:update_checksums()
    end
    return data
end
-- Register as inline service
vpp.register_node("scramjet", scramjet_inline, priority=inline)

Live streaming events (sports, concerts) require sub-second latency. A traditional CDN edge proxy might add 500ms of buffer. A Scramjet Proxy, deployed on the same bare-metal server as the encoding software, forwards chunks of CMAF (Common Media Application Format) segments via io_uring zero-copy, delivering the video to origin servers with only the propagation delay of fiber.

Your Sequence must explicitly serve HTTP content. In Scramjet, you use the App definition to handle incoming requests. In the world of microservices and distributed systems,

Example (JavaScript/Node.js):

const  DataStream, App  = require("scramjet");

module.exports = async function(input) // Create an App instance const app = new App();

// Define a simple GET endpoint
app.get("/", async (request) => 
    return "Hello from Scramjet Proxy!";
);
// Define another endpoint
app.get("/status", async (request) => 
    return  status: "running", timestamp: Date.now() ;
);
// Return the app so Scramjet knows to listen for HTTP
return app;

;

scramjet proxy scramjet proxy

Crystal Reports Runtime


The end result is the installer Crystal Reports XI Runtime with a size of more than 70 Mb. Leaving away several option (export filters, etc) doesn't result in a smaller size. The installer doesn't include the Connectivity Kit for Crystal Reports. If you want to test a report, take the report "Crystal - Address Labels in the orderentry sample of Visual DataFlex 11.1.