से अनुमति ऊंचाई हम डायनेमिक्स जीपी चलाते हैं। फ़ॉर्म/रिपोर्ट्स को संग्रहीत करने के तरीके के कारण, मुझे कुछ इंस्टॉल स्क्रिप्ट्स की आवश्यकता होती है जो प्रोग्राम निर्देशिका में एक .SET फ़ाइल की प्रतिलिपि बनाते हैं। यह मैन्युअल रूप से किया जा सकता है, लेकिन उपयोगकर्ता को केवल इंस्टॉलर स्क्रिप्ट चलाने के लिए बहुत तेज़ है जो उनके लिए उचित फाइलें इंस्टॉल करता है।वीबीस्क्रिप्ट
मैं एक वीबीस्क्रिप्ट इंस्टॉलर बना रहा हूं जो आवश्यक फाइलों को प्रतिलिपि बनाता है। मुश्किल हिस्सा यह है कि कुछ क्लाइंट विंडोज एक्सपी चला रहे हैं, और कुछ विंडोज 7 (या यहां तक कि 8) चल रहे हैं। यूएसी सक्षम है, इसलिए अनुमतियां खेल में आती हैं।
जिस तरह से मैंने इसे करने की कोशिश की है, वह फाइलों की प्रतिलिपि बनाने का प्रयास कर रहा है, और अगर अनुमति त्रुटि का पता चला है, तो यह स्क्रिप्ट को व्यवस्थापक अनुमतियों से पुनः लॉन्च करता है। जहां हमने समस्याओं में भाग लिया है कुछ है (सभी?) विंडोज 7 मशीनों में वर्चुअलाइज्ड फ़ाइल/रजिस्ट्री लिखने सक्षम हैं, इसलिए जब स्क्रिप्ट सी: \ प्रोग्राम फ़ाइलें \ माइक्रोसॉफ्ट डायनेमिक्स \ जीपी -2010 में फ़ाइलों की प्रतिलिपि बनाने की कोशिश करती है, तो यह चुपचाप विफल हो जाती है और उन्हें कॉपी करती है उपयोगकर्ता की AppData \ Local \ VirtualStore निर्देशिका में। यह जीपी के साथ ठीक से काम नहीं करता है।
तो मुझे क्या करना है, स्क्रिप्ट को फ़ाइलों को सी: \ प्रोग्राम फ़ाइलें (वर्चुअलस्टोर निर्देशिका नहीं) में कॉपी करें, और केवल आवश्यक होने पर अनुमतियां बढ़ाएं। यदि मैंने इसे बोर्ड में बढ़ाया है, तो यह स्क्रिप्ट लॉन्च करते समय Windows XP मशीनों को बस एक गुप्त "रन एज़" संवाद बॉक्स पॉप अप करने का कारण बनता है।
Dim WSHShell, FSO, Desktop, DesktopPath
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSHShell = CreateObject("WScript.Shell")
Desktop = WSHShell.SpecialFolders("Desktop")
DesktopPath = FSO.GetAbsolutePathName(Desktop)
'Set working directory to directory the script is in.
'This ends up being C:\Windows\System32 if the script is
'started from ShellExecute, or a link in an email, thus breaking
'relative paths.
WSHShell.CurrentDirectory = FSO.GetFile(WScript.ScriptFullName).ParentFolder
On Error Resume Next
If FSO.FolderExists("C:\Program Files (x86)") Then
WScript.Echo "Installing 64-bit."
FSO.CopyFile "64-bit\*.set", "C:\Program Files (x86)\Microsoft Dynamics\GP2010\", True
FSO.CopyFile "64-bit\*.lnk", DesktopPath, True
ElseIf FSO.FolderExists("C:\Program Files\Microsoft Dynamics\GP2010\Mekorma MICR") Then
WScript.Echo "Installing 32-bit (with MICR)."
FSO.CopyFile "32-bit MICR\*.set", "C:\Program Files\Microsoft Dynamics\GP2010\", True
FSO.CopyFile "32-bit MICR\*.lnk", DesktopPath, True
Else
WScript.Echo "Installing 32-bit."
FSO.CopyFile "32-bit\*.SET", "C:\Program Files\Microsoft Dynamics\GP2010\", True
FSO.CopyFile "32-bit\*.lnk", DesktopPath, True
End If
If Err.Number = 70 Then
CreateObject("Shell.Application").ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """" , "", "runas", 1
WScript.Quit
ElseIf Err.Number <> 0 Then
MsgBox "Error " & Err.Number & vbCrLf & Err.Source & vbCrLf & Err.Description
Else
MsgBox "Installed successfully."
End If
सारांश में::
यहाँ मैं अब तक राशि है कैसे मैं एक VBScript तरक्की अनुमतियाँ बिना XP एक "रन के रूप में" संवाद बॉक्स पर रोकने के कारण है, और बिना के कारण विंडोज़ 7 को ऐपडाटा \ स्थानीय \ वर्चुअलस्टोर में फ़ाइलों की प्रतिलिपि बनाने के लिए?
ऐसा लगता है कि अपने आप को जवाब है, लेकिन अगर वर्तमान में लॉग इन उपयोगकर्ता, व्यवस्थापक अधिकार है विन संस्करण के बजाय मैं परीक्षण करेंगे, और तरक्की करता है, तो केवल की जरूरत है। –