को MikeBazs उत्तर इसके अलावा, मैं निम्नलिखित "वर्कअराउंड" जो एक क्लिक-बार-आवेदन "गैर-सहभागी" और "लगभग मूक" (उपयोगकर्ता प्रगति देखता है की स्थापना करता है प्रदान करना चाहते हैं -window स्थापना के दौरान, कोई क्लिक आवश्यक और/या संभव)
कुछ "मुद्दे" पर विचार कर रहे हैं, लेकिन अगर आप इस गाइड का पालन करें, परिणाम होना चाहिए कि तुम क्या जरूरत है:
1.) अपने आवेदन पर हस्ताक्षर करें: विजुअल स्टूडियो के भीतर आप आसानी से अपने आवेदन के साथ अपने आवेदन पर हस्ताक्षर कर सकते हैं, यह कोई बड़ा नहीं है सौदा।
2.) प्रमाण पत्र का वितरण करें: आदेश में संवाद से बचने के लिए, अनुप्रयोग स्थापित किया जाना चाहिए, तो आप (उस के लिए एक जीपीओ का प्रयोग किसी भी मशीन पर निम्नलिखित दुकानों के लिए अपने प्रमाण पत्र वितरित करने के लिए की जरूरत है): Trusted Publishers
और Trusted Root Certification Authorities
अब, उपयोगकर्ता एक क्लिक के साथ एप्लिकेशन इंस्टॉल करने में सक्षम हैं - कोई सुरक्षा प्रश्न नहीं। लेकिन हम शून्य चाहते क्लिक करता है:
if (-not (Test-Path env:APPInstalled)){
Start-Process "\\server\share\Application\setup.exe"
# Set Flag for "Installed"
[Environment]::SetEnvironmentVariable("APPInstalled", "1", "User")
}
मैं एक उपयोगकर्ता-पर्यावरण चर APPInstalled
कहा जाता है प्रयोग किया है:
3.) एक powershell स्क्रिप्ट, सर्वर पर स्थित है, जो अपने आवेदन के setup.exe को आमंत्रित यह निर्धारित करने के लिए कि एप्लिकेशन को इंस्टॉलेशन की आवश्यकता है या नहीं।
अब, उपयोगकर्ता उस स्क्रिप्ट को निष्पादित कर सकते हैं, केवल एक बार इंस्टॉलेशन प्राप्त करने के बाद कोई और पुष्टि आवश्यक नहीं है। लेकिन एप्लिकेशन स्थापना के बाद शुरू होता है।
4.) अपने आवेदन के स्रोत कोड को संशोधित करें: मैंने एप्लिकेशन के पहले भाग का पता लगाने के लिए एक डमी फ़ाइल का उपयोग किया। यह FirstRun, (यानी स्थापना के बाद दाएं) है अगर मैं सिर्फ इसे फिर से शट डाउन:
private void Form1_Load(object sender, EventArgs e)
{
//first run? That's a initial deployment, close application.
if (!File.Exists("C:\\some\\static\\path\\notfirstrun.dat"))
{
File.WriteAllText("C:\\some\\static\\path\\notfirstrun.dat", "1");
Application.Exit();
}
अब, उपयोगकर्ताओं, thaht स्क्रिप्ट निष्पादित कर सकते हैं केवल आगे कोई आवश्यक पुष्टि के साथ एक बार एक अधिष्ठापन हो रही है और आवेदन नहीं है सेटअप के बाद "ऑटो-स्टार्ट"।
लेकिन हम "क्लिक" रूप में अच्छी तरह से बचना चाहते हैं:
अगर हम सेटअप स्टार्टअप-फ़ोल्डर में powershell स्क्रिप्ट - यह पॉप अप होता है, जो बदसूरत है। अगर हम इसे लॉगिन-स्क्रिप्ट के रूप में सेट करते हैं, तो यह उपयोगकर्ता-संदर्भ में नहीं चलता है, जो क्लिक-वन के लिए आवश्यक है।
"इस" समस्या के समाधान के रूप में, आप इसे vbs
स्क्रिप्ट के अंदर लपेट सकते हैं, जिसमें पावरहेल स्क्रिप्ट को कॉल किया जाता है।ध्यान दें, जो इस उपयोगकर्ता के संदर्भ में निष्पादित किया जाता है, तो उपयोगकर्ता powershell-आलेख निष्पादित करने के अनुमतियों की आवश्यकता:
Dim objShell
Set objShell=CreateObject("WScript.Shell")
strCMD="powershell.exe -sta -noProfile -NonInteractive -nologo -ExecutionPolicy Bypass -f \\server\share\scripts\install_App.ps1"
objShell.Run strCMD,0,True
अंत में
, "टास्क-समयबद्धक" जो चलाता है में एक "टास्क" बनाने के लिए एक जीपीओ का प्रयोग करें vbs
-स्क्रिप्ट लॉगिन के बाद 30 सेकंड, केवल अगर उपयोगकर्ता लॉग ऑन है।
सभी उपयोगकर्ता "स्थापना" प्रगति देखेंगे।
संक्षेप में:
कि एक inivisible vbs स्क्रिप्ट के अंदर स्क्रिप्ट PowerShell एक powershell स्क्रिप्ट
- चादर के साथ स्थापना
- तैनात
- ट्रिगर साइन अपने कोड
- वितरित करना यदि आपके प्रमाण पत्र यह सुनिश्चित करने के लिए कि यह उपयोगकर्ता संदर्भ में चलता है, कार्य-शेड्यूलर का उपयोग करके प्रत्येक मशीन पर vbs स्क्रिप्ट।
धन्यवाद रॉबिन, यह मेरे शोधों ने मुझे भी दिखाया है। यह वास्तव में एक पैकेज है जो मेरे उद्यम वातावरण में तैनात किया जाना है। यह कुछ है जो मैं अपने कर्मचारियों को हर समय चलाने के लिए चाहता हूं, इसलिए चुप इंस्टॉल को प्राथमिकता दी गई थी। – Joe
मूक इंस्टॉल उपयोगकर्ताओं के लिए तैनात करने के खिलाफ नेटवर्क स्क्रिप्ट लिखने के लिए भी सहायक है। – Mike
यह सटीक नहीं है, यह सही है, जब यह सटीक है, सिर्फ इसलिए कि आपको जवाब पसंद नहीं है। – RobinDotNet