2013-02-08 17 views
5

मैं दृश्य स्टूडियो 2010 में एक सी # आउटलुक ऐड-इन (ऑफिस 2010/2013) और एक अन्य स्टैंडअलोन टूल के लिए एक सेटअप प्रोजेक्ट का उपयोग कर रहा हूं। स्थापना के दौरान मैं दृष्टिकोण के सभी उदाहरणों को मारता हूं, बाद में मैं दृष्टिकोण के एक उदाहरण को पुनरारंभ करना चाहता हूं।विजुअल स्टूडियो सेटअप प्रोजेक्ट: वर्तमान उपयोगकर्ता के रूप में कस्टमएक्शन/प्रक्रिया चलाएं सिस्टम खाता

मेरी ऐड परियोजना में मैं एक installerclass जोड़ा और कहा कि एक InstallEventHandler (AfterInstallEventHandler) जहाँ मैं

Process.Start("Outlook"); 

पर अमल करते हुए एक ही आदेश बस एक अन्य संकलित वर्ग में Outlook को खोलता है, संस्थापक दृष्टिकोण के संदर्भ में खुलती प्रोफाइल निर्माण सहायक में।

मैंने प्रतिबद्धता के बाद उपयोगकर्ता द्वारा परिभाषित कार्रवाई के रूप में कार्यरत संकलित exe को चलाने की भी कोशिश की, लेकिन एक ही समस्या होती है।

कोई भी समाधान या स्पष्टीकरण की सराहना की जाएगी।

+3

आप एस पर अपने खुद के सवालों का जवाब कर सकते हैं tackOverflow। मैं अपने प्रश्न को संपादित करने के लिए प्रोत्साहित करते हैं और भविष्य में दूसरों की मदद करने के लिए एक जवाब के रूप में समाधान आप पाया शब्दों में कहें, होगा। –

+0

धन्यवाद, संपादित। –

उत्तर

4

समाधान:

स्थापना प्रणाली खाते में चलाता है। इसके लिए बनाई गई प्रक्रिया में भी कहा गया है, वर्तमान में लॉग इन उपयोगकर्ता के रूप में नहीं।

मैं एक अतिरिक्त परियोजना (InstallHelper) है, जो

Process.Start("Outlook"); 

शामिल मैं InstallHelper CustomAction के रूप में मेरे सेटअप परियोजना में कमिट पर InstallerClass गलत पर CustomAction के गुणों में जोड़ा गया है और बदल बनाया। तब मैं परियोजना फ़ोल्डर में WiRunSql.vbs की नकल की और सेटअप परियोजना के लिए एक PostBuildEvent कहा:

@echo off 
cscript //nologo "$(ProjectDir)WiRunSql.vbs" "$(BuiltOutputPath)" "UPDATE CustomAction SET Type=1554 WHERE Type=3602" 

3602:

  • 0x800 (msidbCustomActionTypeNoImpersonate)
  • 0x400 (msidbCustomActionTypeInScript)
  • 0x200 (msidbCustomActionTypeCommit)
  • 0x12 (कस्टम एक्शन टाइप 18: exe)

1554:

  • 0x400 (msidbCustomActionTypeInScript)
  • 0x200 (msidbCustomActionTypeCommit)
  • 0x12 (कस्टम क्रिया प्रकार 18: exe)

देखें: msdn: Custom Action In-Script Execution Options

प्रकार -change ने msidbCustomActionTypeNoImpersonate (0x00000800) के लिए बिट को हटा दिया, एस o InstallHelper और बनाई गई प्रक्रिया को लॉग इन उपयोगकर्ता के रूप में चलाया जाता है, सिस्टम के रूप में नहीं।

वैकल्पिक रूप से उन परिवर्तनों को ओर्का में एमएसआई खोलने के माध्यम से संभव है (प्रत्येक निर्माण के बाद दोहराया जाना चाहिए, इसलिए मैं लिखित परिवर्तन पसंद करता हूं)।

2

पिछले जवाब देने के लिए अतिरिक्त में (मैं बहुत समय बिताया इस को समझने के लिए): मेरे लिए WiRunSql.vbs की

पाठ:

(यह तुम्हारे लिए भी argument2 अद्यतन स्क्रिप्ट तर्क होता है)

(मेरे लिए PostBuildevent

@echo off 
cscript //nologo "$(ProjectDir)WiRunSql.vbs" "$(BuiltOuputPath)" 

है)

Dim filename, installer, database 
filename = WScript.Arguments(0) 
Set installer = CreateObject("WindowsInstaller.Installer") 
Set database = installer.OpenDatabase(filename, 1) 
sql = "UPDATE `CustomAction` SET `Type`= 1554 WHERE `Type`= 3602" 
Set view = database.OpenView(sql) 
view.Execute 
view.Close 
database.Commit 

आप से पहले आदेश शीघ्र में अपनी स्क्रिप्ट का परीक्षण कर सकते हैं: लिपि में नज़र त्रुटियों के लिए

cscript "C:\Projects\YourProject\WiRunSql.vbs" "C:\Projects\YourProject\Debug\Setup.msi" 

यह जरूरत

नए प्रकार मान आप ओर्का https://support.microsoft.com/en-us/kb/255905

उपयोग कर सकते हैं देखने के लिए इसके अलावा देखो: http://www.codeproject.com/Articles/383481/Editing-an-MSI-Database http://integr8consulting.blogspot.ru/2012/04/microsoft-installer-custom-actions-user.html https://github.com/facebookarchive/ie-toolbar/blob/master/Common/Install/msi/FBIE-MSI/scripts/msipostbuild.vbs