 (defn missing-device-pages []
   (let [dll-names (get-dll-names 32)
         device-page-names (device-pages)]
-    (sort (clojure.set/difference (set dll-names) (set device-page-names)))))
+    (sort (clojure.set/difference
+            (clojure.set/union (set non-windows-device-adapters)
+                               (missing-vcproj)
+                               (set dll-names))
+            (set device-page-names)))))
 
 (defn str-lines [sequence]
   (apply str (interpose "\n" sequence)))

        pattern (re-pattern (str "MMSetup" bits "BIT_[^\\s]+?_" date-token ".exe"))]
    (re-find pattern txt)))

(defn missing-vcproj []
  (let [device-adapter-parent-dirs [(File. micromanager "/DeviceAdapters")
                                    (File. micromanager "/SecretDeviceAdapters")]

        (sort
          (clojure.set/difference
            (set (map #(.getName %) directories-without-vcproj))
            non-windows-device-adapters))))

(defn device-vcproj-files []
  (let [device-adapter-parent-dirs [(File. micromanager "/DeviceAdapters")
