/** Removes the lock file (which normally gets removed on exit), to enable multiple installs. */
 private void removeLock() {
   String appName = getInstallData().getInfo().getAppName();
   File file = FileUtil.getLockFile(appName);
   if (file.exists()) {
     assertTrue(file.delete());
   }
 }
 /**
  * Verifies that a file exists with the specified content.
  *
  * @param name the file name
  * @param content the expected file content
  * @return the file
  * @throws IOException for any I/O error
  */
 private File checkContains(String name, String content) throws IOException {
   checkExists(name);
   File file = new File(temporaryFolder.getRoot(), name);
   List<String> fileContent = FileUtil.getFileContent(file.getPath());
   assertEquals(1, fileContent.size());
   assertEquals(content, StringUtils.trim(fileContent.get(0)));
   return file;
 }
  /**
   * Sets up the test case.
   *
   * @throws Exception for any error
   */
  @Override
  public void setUp() throws Exception {
    Assume.assumeTrue(
        "This test must be run as administrator, or with Windows UAC turned off",
        !skipTests && isAdminUser);

    super.setUp();
    String appName = getInstallData().getInfo().getAppName();
    assertNotNull(appName);
    File file = FileUtil.getLockFile(appName);
    if (file.exists()) {
      assertTrue(file.delete());
    }

    destroyRegistryEntries();
  }
  /** Write the data referenced by URL to primary jar. */
  protected void writeInstallerResources() throws IOException {
    sendMsg("Copying " + installerResourceURLMap.size() + " files into installer");

    for (Map.Entry<String, URL> stringURLEntry : installerResourceURLMap.entrySet()) {
      URL url = stringURLEntry.getValue();
      InputStream in = url.openStream();

      org.apache.tools.zip.ZipEntry newEntry =
          new org.apache.tools.zip.ZipEntry(RESOURCES_PATH + stringURLEntry.getKey());
      long dateTime = FileUtil.getFileDateTime(url);
      if (dateTime != -1) {
        newEntry.setTime(dateTime);
      }
      primaryJarStream.putNextEntry(newEntry);

      IoHelper.copyStream(in, primaryJarStream);
      primaryJarStream.closeEntry();
      in.close();
    }
  }