NeoRouter
http://www.neorouter.com/forum/

Configurable silent installer
http://www.neorouter.com/forum/viewtopic.php?f=5&t=1021
Page 1 of 1

Author:  neokolyan [ Tue Sep 22, 2009 11:12 am ]
Post subject:  Configurable silent installer

I'd like to deploy client parts of NR in silent (unattended) mode with some settings like:
Code:
NeoRouter-sup.er.fre.sh-Setup.exe /silent /login "blabla_user" /pass "blabla_pass" /domen "blabla_domen" /autosilentupdates "Yes" /addon "addon1" /addon "addon2" /addon "addonLast" /moreSetting ...


And later add/remove addons from cmd too.

Author:  luke [ Tue Sep 22, 2009 10:48 pm ]
Post subject:  Re: Configurable silent installer

Thanks again for the suggestions.

Building a completely silent installer can be a little challenging because Windows always ask user's permission before installing driver.

I understand your request. We will evaluate different options and try our best to simplify the setup process for large # of clients.

Author:  neokolyan [ Wed Sep 23, 2009 5:12 am ]
Post subject:  Re: Configurable silent installer

Thanks=)
Permission for driver installing is just single press with no "using one's brains". So almost silent installer can save up to 95% time and efforts. And there's one trick for XP and 2003:
Code:
#include <windows.h>
#include <wincrypt.h>
#include <stdio.h>

#define HP_HASHVALUE HP_HASHVAL

/* This program turns the Driver signing Policy On/Off for Windows XP */
* Written by Stefan `Sec` Zehl <sec@xxxxxx>, 15.11.2004
*
* Thanks to sysinternals.com for regmon and apispy
*        to msdn.microsoft.com for windows reference
*        to cygwin for their environment
*/

void MyHandleError(char *s){
   printf("Error: %s, number %x\n.",s,(unsigned int)GetLastError());
   exit(1);
}
//--------------------------------------------------------------------
int main(void){
   HCRYPTPROV hCryptProv;
   HCRYPTHASH hHash;
   BYTE data[16];
   DWORD len;
   DWORD seed;
   HKEY hkey;
   BYTE onoff=0; // This is the On/Off toggle
   char input[4];
   int x;

   // HKLM\System\WPA\PnP\seed
   if(RegOpenKeyEx(
         HKEY_LOCAL_MACHINE,
         "System\\WPA\\PnP",
         0,
         KEY_READ,
         &hkey
         )==ERROR_SUCCESS){
      printf("RegOpenKey sucess\n");
   }else{
      printf("RegOpenKey failure\n");
   };

   len=sizeof(seed);
   if(RegQueryValueEx(
         hkey,
         "seed",
         NULL,
         NULL,
         (BYTE*)&seed,
         &len
         )==ERROR_SUCCESS){
      printf("RegQueryValue sucess\n");
   }else{
      printf("RegQueryValue failure\n");
   };

   if(hkey)
      RegCloseKey(hkey);

   printf("Seed=%x\n",(unsigned int)seed);

   printf("Hello, World\n");
   if(CryptAcquireContext(
            &hCryptProv,
            NULL,
            NULL,
            PROV_RSA_FULL,
            0))
   {
      printf("CryptAcquireContext complete. \n");
   } else {
      MyHandleError("Acquisition of context failed.");
   }
   //--------------------------------------------------------------------
   // Create a hash object.

   if(CryptCreateHash(
            hCryptProv,
            CALG_MD5,
            0,
            0,
            &hHash))
   {
      printf("An empty hash object has been created. \n");
   } else {
      MyHandleError("Error during CryptBeginHash!\n");
   }
   //--------------------------------------------------------------------
   // Compute the cryptographic hash on the data.

   input[0]=0;
   input[1]=onoff; // This is the Value!
   input[2]=0;
   input[3]=0;

   if(CryptHashData(
         hHash,
         input,
         sizeof(input),
         0))
   {
      printf("The data has been hashed. \n");
   } else {
      MyHandleError("Error during CPHashData!\n");
   }
   //--------------------------------------------------------------------

   if(CryptHashData(
         hHash,
         (BYTE*)&seed,
         sizeof(seed),
         0))
   {
      printf("The data has been hashed. \n");
   } else {
      MyHandleError("Error during CPHashData!\n");
   }
   //--------------------------------------------------------------------
   len=sizeof(data);
   if( CryptGetHashParam(
         hHash,
         HP_HASHVALUE,
         data,
         &len,
         0))
   {
      printf("The hash has been retrieved. \n");
   } else {
      MyHandleError("Error during CPGetHashParam!\n");
   }

   //--------------------------------------------------------------------
   // Clean up.

   // Destroy the hash object.

   if(hHash) {
      if(!(CryptDestroyHash(hHash)))
         MyHandleError("Error during CryptDestroyHash");
   }

   // Release the CSP.

   if(hCryptProv) {
      if(!(CryptReleaseContext(hCryptProv,0)))
         MyHandleError("Error during CryptReleaseContext");
   }

   printf("Hash: ");
   for(x=0;x<sizeof(data);x++){
      printf("%x ",data[x]);
   };
   printf("\nCreate md5 hash completed without error. \n");

   //--------------------------------------------------------------------
   // HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\PrivateHash
   if(RegOpenKeyEx(
         HKEY_LOCAL_MACHINE,
         "Software\\Microsoft\\Windows\\CurrentVersion\\Setup",
         0,
         KEY_WRITE,
         &hkey
         )==ERROR_SUCCESS){
      printf("RegOpenKey sucess\n");
   }else{
      printf("RegOpenKey failure\n");
   };

   len=sizeof(seed);
   if(RegSetValueEx(
         hkey,
         "PrivateHash",
         0,
         REG_BINARY,
         data,
         sizeof(data)
         )==ERROR_SUCCESS){
      printf("RegSetValueEx sucess\n");
   }else{
      printf("RegSetValueEx failure\n");
   };

   if(hkey)
      RegCloseKey(hkey);
   //--------------------------------------------------------------------
   // HKLM\Software\Microsoft\Driver Signing\Policy
   if(RegOpenKeyEx(
         HKEY_CURRENT_USER,
         "Software\\Microsoft\\Driver Signing",
         0,
         KEY_WRITE,
         &hkey
         )==ERROR_SUCCESS){
      printf("RegOpenKey sucess\n");
   }else{
      printf("RegOpenKey failure\n");
   };

   len=sizeof(seed);
   if(RegSetValueEx(
         hkey,
         "Policy",
         0,
         REG_BINARY,
         &onoff,
         1
         )==ERROR_SUCCESS){
      printf("RegSetValueEx sucess\n");
   }else{
      printf("RegSetValueEx failure\n");
   };
   if(hkey)
      RegCloseKey(hkey);

   //--------------------------------------------------------------------
   // HKLM\Software\Microsoft\Driver Signing\Policy
   if(RegOpenKeyEx(
         HKEY_LOCAL_MACHINE,
         "Software\\Microsoft\\Driver Signing",
         0,
         KEY_WRITE,
         &hkey
         )==ERROR_SUCCESS){
      printf("RegOpenKey sucess\n");
   }else{
      printf("RegOpenKey failure\n");
   };

   len=sizeof(seed);
   if(RegSetValueEx(
         hkey,
         "Policy",
         0,
         REG_BINARY,
         &onoff,
         1
         )==ERROR_SUCCESS){
      printf("RegSetValueEx sucess\n");
   }else{
      printf("RegSetValueEx failure\n");
   };
   if(hkey)
      RegCloseKey(hkey);

   exit(0);
}

from here

Author:  neokolyan [ Wed Sep 23, 2009 7:37 am ]
Post subject:  Re: Configurable silent installer

Here I put compiled utility for driver signing policy OFF. It have been tested by me on WindowsXP 32-bit: after launching it I've install NR just pressing "next next next finish" without any popups about "bad driver" ;)

Author:  kevinz [ Wed Sep 23, 2009 2:32 pm ]
Post subject:  Re: Configurable silent installer

Cool! Thanks neokolyan! :lol:

Page 1 of 1 All times are UTC - 5 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/