स्टैंडअलोन .exe फ़ाइल में R स्क्रिप्ट संकलित करें?


85

क्या मैटलैब क्या करता है जैसे मेरी Rस्क्रिप्ट को स्टैंडअलोन .exeफ़ाइल में संकलित करने का कोई आसान तरीका है?


15
बहुत छोटा जवाब: नहीं। कभी नहीं।
डिर्क एडल्डबुलेटेल

2
वास्तव में मैं इसे विचलित करना चाहूंगा लेकिन लिपियों और एल्गोरिथ्म को गुप्त रखना, क्या इस उद्देश्य को प्राप्त करने के लिए इसे या किसी अन्य तरीके से एन्क्रिप्ट करने का कोई तरीका है?
जॉइस

2
पर चर्चा की बहुत सारी stackoverflow.com/questions/4707276/...
बेन Bolker

1
@ जॉइस, कोड को छिपाने के लिए, एक सर्वर पर एप्लिकेशन को वितरित करने के लिए एक मानक समाधान है। इसलिए, आपके उपयोगकर्ता सर्वर के माध्यम से जुड़ेंगे। न केवल आप कोड को छिपाने में सक्षम होंगे, बल्कि आपके उपयोगकर्ताओं को हमेशा सबसे अद्यतित संस्करण तक पहुंच प्राप्त होगी। हालांकि, आपको सर्वर इन्फ्रास्ट्रक्चर (शायद आर क्लाउड प्रदाता का उपयोग करने के लिए सबसे अच्छा) स्थापित करना होगा।
ट्रिपार्टियो

1
पैकेज बनाने से कॉमन कोड वितरित करने में मदद मिलेगी। मैं भी सांसारिक कार्यों / कार्यों के लिए एक निर्वासन में देख रहा हूं, जो बार-बार दोहराता है। और कुछ के साथ एक एक्सई साझा करने के लिए जो यूआई आधारित ऐप को कोडिंग / पसंद नहीं करते हैं। दुर्भाग्य से अभी भी तरीके खोज रहे हैं।
bonCodigo

जवाबों:


28

तथ्य के रूप में समाधान प्राप्त करने का एक तरीका है जो आपकी आवश्यकताओं को पूरा करेगा। आर-ब्लॉगर्स पर आर के साथ डेस्कटॉप एप्स को तैनात करने के लेख पर एक नजर डालें । लेख में विस्तृत रूप से, आप एक एकल exe फ़ाइल की तुलना में कुछ और चीजों का उपयोग करके समाप्त हो जाएंगे।

इसके अलावा, मैं RGtk2 के उपयोग के साथ RGtk2 पर आपका ध्यान आकर्षित करना चाहूंगा। आप अपने स्वयं के इंटरफ़ेस को R में विकसित करने का प्रयास कर सकते हैं। यदि पुश को धक्का देना आता है, तो मुझे विश्वास है कि आप R और पोर्टेबल संस्करण के साथ अपना R कोड पैक कर सकते हैं। एक इंस्टॉलर में निर्भरता और उस से मेक और ऐप, जो कि एक एकल exe फ़ाइल का भ्रम पैदा करेगा।

अपने प्रश्न में आपने पूछा कि क्या आर कोड की व्याख्या करने वाली एक स्टैंडअलोन निष्पादन योग्य फ़ाइल विकसित करना आसान है। मैं यह नहीं कहूंगा कि यह आसान है। यदि आपको किसी एप्लिकेशन से R कोड चलाने की तीव्र इच्छा है, तो आप इसे Java या R.NET के लिए RCaller का उपयोग करके सरल तरीके से कर सकते हैं


1
R के साथ डेस्कटॉप ऐप्स को चित्रित करने पर लिंक किया गया लेख वास्तव में अच्छा है (पोर्टेबल ऐप्स और चमकदार का उपयोग करता है!), Thx!
R Yoda

2
@ मेयोडा मुझे यह पढ़कर खुशी हुई। इस विषय में रुचि है। यदि आप शाइनी के साथ रहना चाहते हैं, तो यह आलेख विंडोज डेस्कटॉप ऐप के रूप में शाइनी ऐप की पैकेजिंग पर दिलचस्प सलाह देता है।
कोनराड

यह पूरे javax.script API में RCaller स्क्रिप्टिंग इंजन का उपयोग करना भी संभव है, mhsatman.com/rcaller-3-0
jbytecode

11

आपकी टिप्पणी के जवाब में:

वास्तव में मैं इसे विचलित करना चाहूंगा लेकिन लिपियों और एल्गोरिथ्म को गुप्त रखना, क्या इस उद्देश्य को प्राप्त करने के लिए इसे या किसी अन्य तरीके से एन्क्रिप्ट करने का कोई तरीका है?

उपयोग कर रहे फ़ंक्शंस को बचाकर आप ऐसा कर सकते हैं save()। उदाहरण के लिए, यहां एक फ़ंक्शन f()जिसे आप गुप्त रखना चाहते हैं:

f <- function(x, y) {
  return(x + y)
}

इसे कहीं भी सहेजें:

save(f, file = 'C:\\Users\\Joyce\\Documents\\R\\Secret.rda')

और जब आप फ़ंक्शन का उपयोग करना चाहते हैं:

load("C:\\Users\\Joyce\\Documents\\R\\Secret.rda")

मैं अपने सभी फंक्शन्स को अलग-अलग फाइलों में सेव करूँगा, उन्हें एक फोल्डर में रखूँगा और एक प्लेन पुराना होगा। उन सभी में स्क्रिप्ट लोड करना और जो भी निष्पादित हो। पूरी बात को ज़िप करें और इसे वितरित करें। शायद इसे एक पैकेज में भी संकलित करें। प्रभावी रूप से पूरी बात तभी पढ़ी जाएगी।

यह समाधान हालांकि यह बहुत अच्छा नहीं है। आप फ़ंक्शन का नाम टाइप करके अभी भी फ़ंक्शन को देख सकते हैं, इसलिए यह उस अर्थ में छिपा नहीं है। लेकिन अगर आप .rda फ़ाइलों को खोलते हैं तो उनकी सामग्री सभी विकृत हो जाती है। यह सब वास्तव में इस बात पर निर्भर करता है कि आर के साथ आपके कोड के प्राप्तकर्ता कितने अनुभवी हैं।


सुझाव के लिए धन्यवाद, दूसरों को सीधे कोड को देखने से रोकने का एक तरीका हो सकता है, फिर से धन्यवाद।
जॉइस

3
एक बार टाइप करने पर यह दिखाई देगा f
MAPK

4

एन्क्रिप्टेड कोड का एक रूप petalsटीचिंगडेमोस पैकेज में फ़ंक्शन में लागू किया गया है ।

ध्यान दें कि यह छिपे हुए कोड को खोजने के लिए केवल मध्यवर्ती स्तर के प्रोग्रामिंग कौशल लेगा, हालांकि यह जानबूझकर प्रयास करता है और उपयोगकर्ता दुर्घटना से कोड को देखने का दावा नहीं कर पाएगा। तब आपको किसी भी प्रकार के कोई भी समझौते को लागू करने के लिए किसी प्रकार के लाइसेंस समझौते की आवश्यकता होगी।


धन्यवाद ग्रेग, मैं सिर्फ आपके द्वारा बताए गए फ़ंक्शन को देखता हूं, लेकिन यह पता नहीं लगा सकता कि कोड को छिपाने के लिए इसका उपयोग कैसे करें, क्या आप कृपया अधिक विस्तृत वर्णन करेंगे?
जॉइस

@ जॉइस, petalsफ़ंक्शन कोड को छिपाता नहीं है, यह कोड के एक महत्वपूर्ण भाग को छिपाए जाने का एक उदाहरण है (क्या आप कुंजी का टुकड़ा छिपा सकते हैं?)। एनक्रिप्टिंग (ब्लीचिंग) करने के लिए अन्य उपकरणों की आवश्यकता होती है। एक सरल दृष्टिकोण पर चर्चा की जाती है: stat.ethz.ch/pipermail/r-devel/2011-October/06225.html । बाइट संकलन भी मदद कर सकता है, लेकिन आपको वास्तव में कुछ प्रकार के लाइसेंस समझौते की आवश्यकता है।
ग्रेग स्नो

3

वैसे आपको तैनाती मशीन पर आर स्थापित करने की आवश्यकता है। निष्पादन योग्य बनाने के लिए, मुझे यकीन नहीं है कि यह संभव है। लेकिन आप एक और प्रोग्राम बना सकते हैं जो आपकी आर स्क्रिप्ट को आमंत्रित करता है। R एक व्याख्या की गई भाषा है। यह संभव नहीं है।


3
क्या हमारे पास किसी भी आर कंपाइलर पर कोई खबर है? मैंने अजगर का उपयोग करना शुरू कर दिया और एक्साई फाइलें (उदाहरण के लिए py2exe और cx_freeze) का उत्पादन करने के आसान तरीके हैं। आर में जल्द ही ऐसा कुछ देखने का कोई मौका है?
टोनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.