2009-03-23 37 views
32

Tôi muốn nhấn một nút từ ứng dụng Adobe AIR và thực hiện một số chương trình đã cài đặt. Ví dụ, tôi sẽ có một nút có tên "Start Winamp". Khi điều này được nhấn nó nên bắt đầu Winamp.exe trực tiếp ... Tôi không muốn một số điều dòng lệnh thực hiện, tôi chỉ muốn một exe để bắt đầu. Hay ... nó giống nhau không? Xin vui lòng cho tôi biết nếu điều này là có thể.Adobe AIR để thực hiện chương trình

Cảm ơn bạn.

+0

Không vi phạm, nhưng đã được yêu cầu. – dkretz

+6

@Le dorfier, Ở đâu? Tôi nghĩ đây là câu hỏi đầu tiên của câu hỏi này. –

+1

Bạn có cân nhắc sửa đổi câu hỏi được chấp nhận ngay bây giờ mà NativeProcess tồn tại không? – Jono

Trả lời

10

Không có cách nào trực tiếp để thực hiện. Hãy thử CommandProxy.

Đọc bài đăng trên blog rất cẩn thận. Bạn thực sự cần tạo hai dự án khác nhau: một hệ điều hành gốc có thể thực thi và một ứng dụng AIR. Bản thực thi tự nhiên sẽ kích hoạt ứng dụng AIR của bạn. Ứng dụng AIR lần lượt yêu cầu thực thi để xử lý các yêu cầu cấp hệ điều hành.

Tải xuống nguồn từ Google Code và tạo hai dự án - Visual Studio/Mono cho mẫu C# exe và một - cho ứng dụng AIR. Here là liên kết mô tả cách thiết lập trước đây.

Trong file MXML chính ứng dụng AIR của bạn, bạn cần phải làm như sau:

  • Tạo một đối tượng CommandProxy, thêm một vài event listeners, để phát hiện kết nối, và Command phản ứng và không bị lỗi.

  • Kết nối với exe bản địa thông qua một connect gọi

  • Trong xử lý sự kiện cho connect, tạo ra một mới Command ví dụ ScreenshotCommand và thực hiện nó (thông qua phương thức CommandProxy.execute)

... và đó là nó!

Hy vọng điều này sẽ hữu ích.

+0

Tôi thực sự không biết cách làm cho nó hoạt động. Bạn có một ví dụ làm việc? Thnks –

+1

CommandProxy? Bạn đang gặp phải vấn đề gì? Tôi không có gì sẵn sàng, nhưng có thể thử lại vào ngày mai. – dirkgently

+0

Tôi chỉ không biết làm thế nào để ... bắt đầu toàn bộ điều ... những tập tin để sử dụng .. làm thế nào để biên dịch đúng cách. Tôi thực sự cần một ví dụ về một cái gì đó từ AIR gửi một lệnh như "calc" trên Windows. Thnank bạn! –

1

Xem bài viết trên blog này: Run an exe file from AIR

tóm tắt ngắn:

"Nếu bạn thực sự cần phải chạy bên ngoài file exe, và không có cách nào khác giải quyết vấn đề của bạn, sau đó bạn sẽ đảm bảo rằng người dùng chạy phần mềm khác trước khi khởi chạy ứng dụng AIR . "

1

Hiện tại, không có cách nào để thực hiện điều này với AIR. Có một số tùy chọn, mặc dù:

  • Shu
  • Red5 chạy trên localhost
  • Tạo một dịch vụ chạy trên máy tính của người dùng và kết nối với nó bằng cách sử sockets.
4

Câu trả lời có hai phần. Một, nếu bạn thực sự phải chạy một tập tin exe, cách duy nhất để đi là sử dụng một proxy lệnh. Cá nhân, sử dụng một trong. Net/Mono là một chút thổi phồng.Tôi không biết Mono, nhưng yêu cầu người dùng của bạn cài đặt .Net AIR sẽ chỉ lo lắng về tất cả chúng. Thêm vào đó, nếu tôi định yêu cầu người dùng cài đặt Mono, tại sao không chỉ viết UI trong Mono và được thực hiện với nó ...?

Bạn có thể viết một proxy lệnh đơn giản trong Ruby, điều này thực sự sẽ phức tạp và ít rắc rối trong khoảng 5 phút (tôi đã làm điều đó, nếu bạn muốn mã nhận xét ở đây và tôi sẽ đăng nó). Nếu bạn muốn kiểm soát quá trình sau khi nó được khởi chạy, đó là một nỗ lực nghiêm túc hơn. Để phân phối, vv, tôi tin rằng Ruby sẽ dễ dàng hơn.

Mặt khác,, check this idea out. Jeff đề xuất sử dụng yêu cầu URL từ AIR. Về cơ bản, nếu trình duyệt của bạn sẽ diễn giải chính xác, bạn đã sẵn sàng. Mã trông giống như thế này

var request : URLRequest = new URLRequest('C:\\playlists\\test.m3u'); 

Tôi nghĩ rằng, giải pháp thứ hai này thậm chí có thể hoạt động cho Winamp (ví dụ: danh sách phát hoặc thứ gì đó).

Chúc may mắn và cảm ơn bạn cho câu hỏi, mà có lẽ là một dupe nhưng Google chỉ tìm thấy cái này, do đó bạn đã thắng :)

3

AIR 2.0 sẽ có khả năng này.

Nó dự kiến ​​sẽ đi ra trong phiên bản beta vào cuối năm nay (2009) và tàu nửa đầu năm 2010.

http://blogs.adobe.com/air/2009/10/previewing_adobe_air_2_at_adob.html

quá trình Native API Bắt đầu với AIR 2, nhà phát triển sẽ có quyền truy cập vào một API quá trình gốc sẽ cho phép các ứng dụng gọi và giao tiếp với các ứng dụng gốc trên máy cục bộ. Để duy trì tính chất nền tảng chéo của định dạng tệp .air, các ứng dụng tận dụng lợi thế của API quá trình gốc phải được triển khai dưới dạng trình cài đặt gốc như .exe và .dmg. SDK thời gian chạy AIR sẽ bao gồm hỗ trợ tạo trình cài đặt gốc cơ bản.

65

Với AIR 2.0 bây giờ bạn có thể:

if(NativeProcess.isSupported) 
{ 
    var file:File = File.desktopDirectory; 
    file = file.resolvePath("StyleLookupold.exe"); 

    var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
    nativeProcessStartupInfo.executable = file; 
    var process:NativeProcess = new NativeProcess(); 

    process.start(nativeProcessStartupInfo); 

} 

Bạn cũng cần phải thêm video này vào tập tin mô tả của bạn.

<supportedProfiles>extendedDesktop</supportedProfiles> 
+0

Vâng, nó hoạt động !! – rafalry

+0

tệp tin mô tả ở đâu? Tôi đang sử dụng flash CS5 – Lucas

+2

@Lucas Câu hỏi hay, Trong Flash CS5, bạn sẽ muốn đi tới 'Tệp> Cài đặt Adobe Air 2' Sẽ có một phần được gọi là ** Tiểu sử: ** với 4 hộp kiểm. Hãy chắc chắn * Extended Desktop * là chỉ một kiểm tra. –

1

Một cách khác để thực hiện điều này là khởi chạy máy chủ web đơn giản trên máy cục bộ (trong nền) và gọi đó là phương thức sử dụng HTTPService.

Các webserver nền có thể là ví dụ trong python: http://fragments.turtlemeat.com/pythonwebserver.php

Và nó có thể khởi chạy file thực thi và cung cấp chức năng mà AIR không thể.

Điều này giúp mã Flex sạch vì nó chỉ thực hiện giao diện REST và python (hoặc ngôn ngữ khác) phần còn lại của công việc. Bạn cũng có thể hưởng lợi từ việc sử dụng python như một giao diện cho cơ sở dữ liệu sqlite hoặc bạn có thể khởi chạy toàn bộ django như một máy chủ web.

Hạn chế duy nhất là máy chủ phải đang chạy trên máy chủ cục bộ .. và nghe một số cổng (ví dụ 81). bạn có thể làm điều này bằng cách khởi chạy máy chủ khi khởi động hệ thống.

Đó không phải là cách tốt nhất nhưng trong một số trường hợp, nó có thể giúp dự án của bạn giống như nó đã làm cho tôi.

0

trong mac os x, nếu bạn muốn khởi chạy tệp .app, khi đó bạn phải viết thông tin sau cho đường dẫn tệp. (Giả sử rằng tên của ứng dụng này là xxx)

if(NativeProcess.isSupported) 
{ 
    //not correct 
    //file = file.resolvePath("/Applications/xxx.app"); 

    //correct 
    file = file.resolvePath("/Applications/xxx.app/Contents/MacOS/xxx"); 

    var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
    nativeProcessStartupInfo.executable = file; 
    var process:NativeProcess = new NativeProcess(); 

    process.start(nativeProcessStartupInfo); 

} 
0

Hoặc đơn giản trang web của tôi tạo ra bộ cài đặt tùy chỉnh để ứng dụng mới đọc thêm

http://board.flashkit.com/board/showthread.php?834579-Embed-exe-file-from-swf-to-write-to-local-directory

Mẹo thêm: Chúng tôi khuyên bạn nên sử dụng Enigma Virtual Box bởi vì nó là miễn phí và nó là rất tốt cho ứng dụng ảo hóa hoặc Exe-Packer như BoxedApp Packer nhưng nó chi phí rất nhiều so với Enigma Virtual Box Cảm ơn!

Các vấn đề liên quan