using namespace icinga;
-int InstallIcinga(void)
+static String GetIcingaInstallDir(void)
{
- MessageBox(NULL, "Install", "Icinga 2", 0);
+ char szFileName[MAX_PATH];
+ if (!GetModuleFileName(NULL, szFileName, sizeof(szFileName)))
+ return "";
+ return Utility::DirName(Utility::DirName(szFileName));
+}
+
+static void ExecuteCommand(const String& command)
+{
+ std::cerr << "Executing command: " << command << std::endl;
+ system(command.CStr());
+}
+
+static void ExecuteIcingaCommand(const String& args)
+{
+ ExecuteCommand("\"" + GetIcingaInstallDir() + "\\sbin\\icinga2.exe\" " + args);
+}
+
+static int InstallIcinga(void)
+{
+ String installDir = GetIcingaInstallDir();
+
+ ExecuteCommand("icacls \"" + installDir + "\" /grant *S-1-5-20:(oi)(ci)m");
+ ExecuteCommand("icacls \"" + installDir + "\\etc\" /inheritance:r /grant:r *S-1-5-20:(oi)(ci)m *S-1-5-32-544:(oi)(ci)f");
+
+ Utility::MkDirP(installDir + "/etc/icinga2/pki", 0700);
+ Utility::MkDirP(installDir + "/var/cache/icinga2", 0700);
+ Utility::MkDirP(installDir + "/var/lib/icinga2/pki", 0700);
+ Utility::MkDirP(installDir + "/var/lib/icinga2/agent/inventory", 0700);
+ Utility::MkDirP(installDir + "/var/lib/icinga2/api/config", 0700);
+ Utility::MkDirP(installDir + "/var/lib/icinga2/api/log", 0700);
+ Utility::MkDirP(installDir + "/var/lib/icinga2/api/zones", 0700);
+ Utility::MkDirP(installDir + "/var/lib/icinga2/api/zones", 0700);
+ Utility::MkDirP(installDir + "/var/log/icinga2/compat/archive", 0700);
+ Utility::MkDirP(installDir + "/var/log/icinga2/crash", 0700);
+ Utility::MkDirP(installDir + "/var/spool/icinga2/perfdata", 0700);
+ Utility::MkDirP(installDir + "/var/spool/icinga2/tmp", 0700);
+
+ ExecuteIcingaCommand("--scm-install daemon");
+
return 0;
}
-int UninstallIcinga(void)
+static int UninstallIcinga(void)
{
- MessageBox(NULL, "Uninstall", "Icinga 2", 0);
+ ExecuteIcingaCommand("--scm-uninstall");
+
return 0;
}
/* must be called before using any other libbase functions */
Application::InitializeBase();
+ //AllocConsole();
+
int rc;
if (strcmp(lpCmdLine, "install") == 0) {
rc = 1;
}
+ //Utility::Sleep(3);
+
Application::Exit(rc);
}
<CPackWiXPatch>
<CPackWiXFragment Id="#PRODUCT">
+ <Property Id="ALLUSERS">1</Property>
+
<CustomAction Id="XtraInstall" FileKey="CM_FP_sbin.icinga2_installer.exe" ExeCommand="install" Execute="deferred" Impersonate="no" />
<CustomAction Id="XtraUninstall" FileKey="CM_FP_sbin.icinga2_installer.exe" ExeCommand="uninstall" Execute="deferred" Impersonate="no" />
<InstallExecuteSequence>
<Custom Action="XtraInstall" Before="InstallFinalize">$CM_CP_sbin.icinga2_installer.exe>2</Custom>
- <Custom Action="XtraUninstall" After="InstallInitialize">$CM_CP_sbin.icinga2_installer.exe=2</Custom>
+ <Custom Action="XtraUninstall" Before="RemoveExistingProducts">$CM_CP_sbin.icinga2_installer.exe=2</Custom>
</InstallExecuteSequence>
+
+ <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Run Icinga 2 setup wizard" />
+
+ <Property Id="WixShellExecTarget" Value="[#CM_FP_sbin.Icinga2SetupAgent.exe]" />
+ <CustomAction Id="LaunchIcinga2Wizard"
+ BinaryKey="WixCA"
+ DllEntry="WixShellExec"
+ Impersonate="no" />
+
+ <UI>
+ <Publish Dialog="ExitDialog"
+ Control="Finish"
+ Event="DoAction"
+ Value="LaunchIcinga2Wizard">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
+ </UI>
</CPackWiXFragment>
</CPackWiXPatch>
\ No newline at end of file